我试图随着时间的推移显示机器状态。部分原因是重现/自动化过去手工完成的报告。它包括根据机器正在进行的操作在Excel中着色2分钟的“时间片”。
(对不起,发布图片的声誉不够,但它是一个经典的热图,状态驱动颜色。一些非DC-JS小提琴:http://jsfiddle.net/ww6Lbnc5/4/)
我能够在下面的jsfiddle中生成我想要的大部分内容: http://jsfiddle.net/hwhfxz2t/14/
See fiddle for code.
总状态持续时间(对于选定的时间范围)显示在pieChart中,然后是各个状态行,然后是人们习惯的热图。 (ZOOM和日期选择按钮在小提琴中不起作用,但如果您愿意,可以选择特定的数据范围或放大。)
折线图使用状态的原始表示,包括输入状态的时间和持续时间。
为了使热图工作,我不得不(我认为)获取原始数据并将其转换为单独的分钟块并用状态标记它们。例如,原始数据指定:
RUN 状态 14:30 300 秒
变为:
14:30 = RUN , 14:31 = RUN , 14:32 = RUN , 14:33 = RUN 和 14:34 = RUN
第233-297行中的代码循环遍历原始数据并生成一个执行此操作的新数据。在给定分钟内存在多个状态的情况下,最后一个状态存活。
这没关系,但似乎这个代码正是在group()中通常完成的.reduce(add,remove,init)。但在这种情况下,我需要根据状态的持续时间添加多个时隙。
另外,因为它现在使用不同的交叉过滤器,所以地图不会互相更新。
以下是我的相关问题:
我不确定这是否应该在crossfilter组中。如果是这样,请忽略我的漫无边际。如果有人知道如何通过分组更好地保持图表链接,请告诉我。
- 尼科
答案 0 :(得分:0)
关于问题3:
DC.js热图目前不支持轴上的自定义顺序功能,但有一个pull request已合并到开发分支中,并且很快就会对公众开放。
您可以手动编辑dc.js文件,将热图中的排序设置为自定义函数。在最新的(2.0.0-beta10)版本中,它是以下行:
rowValues.sort(d3.ascending);
因此
colValues.sort(d3.ascending);