类似gitlab代码提交的热力图怎么做?
本文由 网易云发布。
作者:张淞(本篇文章仅限知乎内部分享,如需转载,请取得作者同意授权。)
昨夜,网易有数产品经理路过开发的显示屏前见到了类型这样的一张图:
于是想到有数能不能做出这样的图来?作为有数的开发的我在一边思索了一下,开了一下脑洞,结合最近做的网易有数的新功能,觉得可以实现,于是就开始做一张。
首先,我们需要看上图的x轴与y轴分别是什么,x虽然显示的是月份,但是实为日期轴,而且是日期映射为“年-周”的日期轴,而且这些日期是有时间范围的,这意味着我们需要添加日期筛选器。而这里的y轴则是“星期”(day of week)。这里我们使用最常用的超市订单数据源来尝试一下做出这样一张图表。
先插入一个“图表”控件,先来完成放置x与y轴的工作。
我们把年放到X轴上,选择年周日期映射函数,由于超过了200列,我们可以为它来添加一个筛选器,把订单日期放入筛选器后点击左下角的更多日期筛选方式,并用列表筛选,选择2011。
下一步把订单日期再拖放到Y轴上,并选择日期(星期)日期映射函数。这样在Y轴上就得到了1到7,表示一周7天的轴。
这里,有数把这种图表自动推断为表格,而不是小方块,这是由于全部属性面板中的图表类型为自动,网易有数认为这种情形下表格最好。我们可以把全部属性中的“自动”改为“并列柱状图”,于是就得到了下面的图:
我们可以调整下下图表控件的调度来让里面的柱子变成正方形:
可以看到这些小方块的颜色是没有深浅的,这是因为什么的,这是因为颜色并不并未任何的度量,因为gitlab中小方块图的颜色是表示提交数的,所以“全部属性”面板的颜色上应该有一个度量,这里我们可以把订单中的数据拖入“颜色”中:
可以看到我们之前的控件大小被左上角的数量的图例破坏了,为了把它去掉,我们可以在“图表”面板“样式”的tab中把图例前的对勾去掉,另外原图中也没有轴线,在样式中也可以调整为透明色或者白色:

这些交互在图表的绘制区是没有交互的,未来如果有数中如果加入使用的体验会更好。于是这张图就成了这个样子:
现在看看与gitlab的图相比还有没有什么不同?首先这里是有轴名称的,就是上面的年周(订单日期)还有左边的星期(订单日期),只要双击图表进入编辑页面后在相应的区域中右键选择“隐藏名称”就可以做到这一点。(窃以为这里的方案应该改成隐藏轴名称才好)。另外就是标题的隐藏,就是那行“数量(按星期(订单日期)、年周(订单日期)划分)”,这个的设置在“样式”tab里中的第一行。好了,下面这张图表就变成了:
还有几处不一样,一个是方块的颜色,这个只需要在“颜色”面板中设置即可,另外不一样的地方就是X轴的格式,这一格式可以在X轴订单日期胶囊的日期显示格式中选择,然而,这一列表中并没有提供英文月份的选项。但是由于背后处理日期格式的部分是我做的,实质上我们的服务器是支持这种月份的,只需要把格式改成MMM即可,由于我是有数的开发,这里先用我们有数中隐藏的“上帝模式来做到这一点”,于是就得到了:
可是还是没有办法对于一个月份只显示一个,这里需要配置步长,但是我们并没有开放这一入口,所以无法做到一模一样。另外就是左侧轴的问题,星期的格式不是英文的首字母以及一周的开始不是星期日而是星期一,这一点在产品设计的时候也有讨论过,未来也许可以考虑让用户设置。首字母的这一点可以使用计算字段来完成,但是略有麻烦,这个计算字段如下:
IF DAYOFWEEK([订单日期]) = 1 THEN "Mon"
ELSE IF DAYOFWEEK([订单日期]) = 2 THEN "Tue"
ELSE IF DAYOFWEEK([订单日期]) = 3 THEN "Wed"
ELSE IF DAYOFWEEK([订单日期]) = 4 THEN "Thu"
ELSE IF DAYOFWEEK([订单日期]) = 5 THEN "Fri"
ELSE IF DAYOFWEEK([订单日期]) = 6 THEN "Sat"
ELSE IF DAYOFWEEK([订单日期]) = 7 THEN "Sun"
但是,但是,由于目前的有数不支持自定排序,只支持字母序,所以Fri会排在第一个,Mon会排在第二个,Wed会在最后。本质上这里应该是一个日期的数据字典,但是这一日期加了日期映射函数,对于这种数据字典的设置有些问题,所以目前也无法满足这里的需求。
总结:
从上面的过程来看,有数对于制作图表的功能还是十分强大的,因要照猫画虎做一些图表还是能做到八九不离十的,这里的热力图就印证出了这一点,它是通过各种数据胶囊的放置与样式的配置来得到的。但是在一些细节上,比如隐藏轴名称,标题名称等配置入口还需要综合整理,加入月份的日期格式或是开放让用户自行配置,日期的步长值也需要开放让用户配置。此外就是自定义排序的设置以及更加强大的数据字典等功能,这些细节真的是需要长时间细细的打磨。
看完这篇文章,是不是想自己试试看呢,快来吧网易有数 - 网易大数据|专业的私有化大数据平台
了解 网易云 :
网易云官网:https://www.163yun.com/
新用户大礼包:https://www.163yun.com/gift
网易云社区:https://sq.163yun.com/
类似gitlab代码提交的热力图怎么做?的更多相关文章
- 再见Jenkins,从Gitlab代码提交到k8s服务持续交付只需七毛三(走过路过不要错过)
Gitlab runner 快速搭建CICD pipeline 背景 日常开发中,相信大家已经做了很多的自动化运维环境,用的最多的想必就是利用Jenkins实现代码提交到自动化测试再到自动化打包,部署 ...
- Jnekins+Gitlab代码提交全程配置
实验环境: 测试机:192.168.2.156 Jenkins:192.168.2.157 Gitlab:192.168.2.158 温馨提示:如果不知道,Jenkins和Gitlab安装过程~可参考 ...
- 小玩意儿之Gitlab 代码提交日志同步到禅道项目管理系统
以前都是使用禅道官方推荐的服务器本地扫描的方式,但其实不太方便,需要跟着项目的变化,不断的在配置文件维护项目相应仓库的配置. 然后现在Web Hooks越来越普遍的情况下,想尝试一种新的方式.看了禅道 ...
- 配置gitlab代码提交之后自动触发jenkins
https://www.cnblogs.com/bugsbunny/p/7919993.html
- Gitlab源码库里代码提交后,如何触发jenkins自动构建?
版本库里代码提交后,如何触发jenkins自动构建?这是一个面试题,感觉自己回答的并不好,因为并没有用过这个功能,之前公司实际项目用的是svn版本管理,一般都用立刻构建,和定时任务构建(不管代码是否有 ...
- Gitlab与Sonarqube整合-代码提交自动检测
目录 概述 准备工作 postgres sonarqube gitlab gitlab-runner Gitlab-runner容器 注册Gitlab-runner Sonarqube gitlab ...
- 拉仇恨!webhook + 企业微信给同事做了个代码提交监听工具
本文案例收录在 https://github.com/chengxy-nds/Springboot-Notebook 大家好,我是小富~ 最近接个任务,用webhook做了个代码提交监听功能,就是有人 ...
- git 操作 :从远程仓库gitLab上拉取指定分支到本地仓库;git如何利用分支进行多人开发 ;多人合作代码提交实践
例如:将gitLab 上的dev分支拉取到本地 git checkout -b dev origin/dev 在本地创建分支dev并切换到该分支 git pull origin dev 就可以把git ...
- 有手就行——Jenkins介绍 及 Gitlab代码托管服务器安装
Jenkins 介绍 及 Gitlab代码托管服务器安装 Gitlab安装 源码上传到Gitlab仓库 Jenkins介绍 Jenkins 是一款流行的开源持续集成(Continuous Integr ...
随机推荐
- 4_bootstrap之栅格系统
4.栅格系统 4.1.简述栅格系统 为了方便在布局容器中进行网页的布局操作. BootStrap提供了一套专门用于响应式开发布局的栅格系统. 栅格系统将一行分为12列,通过设定元素占用的列数来 布局元 ...
- Lua加密
两种方式:一种用luac,一种用luajit luac加密: 1.lua本身可以使用luac将脚本编译为字节码(bytecode)从而实现加密,去官网下载Lua源代码包(http://www.lua. ...
- 新手C#s.Split(),s.Substring(,)以及读取txt文件中的字符串的学习2018.08.05
s.split()用于字符串分割,具有多种重载方法,可以通过指定字符或字符串分割原字符串成为字符串数组. //s.Split()用于分割字符串为字符串数组,StringSplitOptions.Rem ...
- 最全最详细的用JS过滤Emoji表情的输入
在前端页面开发过程中,总会碰到不允许输入框输入emoji表情的需求,我的思路是通过编码用正则匹配表情,然后将其替换为空字符创.但是问题也是显而易见的,完整的编码集是什么呢?查阅了官方文档,发现上面并没 ...
- Shder中实现TintColor
[Shder中实现TintColor] TintColor实现上相当于一个滤镜,若TintColor的R为0,则原图的R通道颜色应该为0.基于此,实现TintColor很容易,原图颜色直接乘以Tint ...
- 未在本地计算机上注册“Microsoft.Jet.OLEDB.4.0”提供程序
实现EXCEL导入功能:web网站,excel导入用OLEDB同样会报错:未在本地计算机上注册“Microsoft.Jet.OLEDB.4.0”提供程序 报错信息: Exception caught. ...
- 更改Mysql数据库数据存储位置的具体步骤
首先把mysql的服务先停掉,更改MySQL配置文件My.ini中的数据库存储主路径,将老的数据库存储主路径中的数据库文件和文件夹复制到新的存储主路径,接下来重启搞定. 一.首先把mysql的服务先停 ...
- java高级工程师(一)
一.无笔试题 不知道是不是职位原因还是没遇到,面试时,都不需要做笔试题,而是填张个人信息表格,或者直接面试 二.三大框架方面问题 1.Spring 事务的隔离性,并说说每个隔离性的区别 ...
- ant的hello world很好的官方文档[z]
http://ant.apache.org/manual/tutorial-HelloWorldWithAnt.html
- 运行Junit单测时遇到的问题
现在有两个办法解决: 1.junit版本降到4.10 2.导入hamcrest-core-1.3.jar 官网:JUnit now uses the latest version of Hamcres ...