dc.js - 热图的矩形笔刷?
dc.js - rectangular brush for heat map?
我想自己使用 dc.js 热图吗?
我在文档中找不到任何关于这是否可能开箱即用的信息,所以我怀疑不会。默认值 row-/column-/cell-clicking 工作得很好,但我认为(就用户努力而言)效率不足以选择更大矩阵中的单元格。
谢谢!
你说得对 - 该功能当前未包含在热图中。
添加它真的很好,但可能有点工作。
与此同时,如果您愿意 fiddle 稍微调整一下参数,您可以使用散点图获得一个不错的近似值,因为它允许您更改点的大小和形状.
我使用了 heatmap filtering example,将 scatterPlot
换成 heatmap
,更改了一些参数,得到了一些运行良好的东西:
首先,我们可以设置宽度和高度以适应大小为 15x15 的 "dots",就像我们在热图示例中所做的那样 - 除非我们使用散点图时会遇到方点:
.width(12 * 15 + 40)
.height(27 * 15 + 20)
.margins({left: 40, top: 0, right: 0, bottom: 20})
边距用于轴文本。
接下来,我们设置 x 域以适应以其值为中心的点:
.x(d3.scaleLinear().domain([-0.5,11.5]))
.yAxisPadding(0.5)
(不确定为什么 elasticY
有效,但 elasticX
无效...一次只能挖掘这么多。)
接下来,我们可以将排除半径设置为与正常半径相同,排除点使用灰色:
.symbol(d3.symbolSquare)
.excludedSize(15)
.symbolSize(15)
.excludedColor('#ccc')
您可以通过几种不同的方式来指示已过滤的内容 in/out - 请查看 the scatterPlot docs for other ideas. For example you could also use excludedOpacity
。但我发现热图的不透明度有点令人困惑,因为褪色使它看起来只是具有不同的值,而不是被完全排除。调味!
最后,散点图使用了"real"d3轴,所以需要配置Y轴才能正确显示数字:
heatmapChart.yAxis().tickFormat(d3.format('.4'))
总的来说,我很惊讶这是多么容易,因为它们采用相同的数据格式并且具有大部分相同的参数。
我想自己使用 dc.js 热图吗?
我在文档中找不到任何关于这是否可能开箱即用的信息,所以我怀疑不会。默认值 row-/column-/cell-clicking 工作得很好,但我认为(就用户努力而言)效率不足以选择更大矩阵中的单元格。
谢谢!
你说得对 - 该功能当前未包含在热图中。
添加它真的很好,但可能有点工作。
与此同时,如果您愿意 fiddle 稍微调整一下参数,您可以使用散点图获得一个不错的近似值,因为它允许您更改点的大小和形状.
我使用了 heatmap filtering example,将 scatterPlot
换成 heatmap
,更改了一些参数,得到了一些运行良好的东西:
首先,我们可以设置宽度和高度以适应大小为 15x15 的 "dots",就像我们在热图示例中所做的那样 - 除非我们使用散点图时会遇到方点:
.width(12 * 15 + 40)
.height(27 * 15 + 20)
.margins({left: 40, top: 0, right: 0, bottom: 20})
边距用于轴文本。
接下来,我们设置 x 域以适应以其值为中心的点:
.x(d3.scaleLinear().domain([-0.5,11.5]))
.yAxisPadding(0.5)
(不确定为什么 elasticY
有效,但 elasticX
无效...一次只能挖掘这么多。)
接下来,我们可以将排除半径设置为与正常半径相同,排除点使用灰色:
.symbol(d3.symbolSquare)
.excludedSize(15)
.symbolSize(15)
.excludedColor('#ccc')
您可以通过几种不同的方式来指示已过滤的内容 in/out - 请查看 the scatterPlot docs for other ideas. For example you could also use excludedOpacity
。但我发现热图的不透明度有点令人困惑,因为褪色使它看起来只是具有不同的值,而不是被完全排除。调味!
最后,散点图使用了"real"d3轴,所以需要配置Y轴才能正确显示数字:
heatmapChart.yAxis().tickFormat(d3.format('.4'))
总的来说,我很惊讶这是多么容易,因为它们采用相同的数据格式并且具有大部分相同的参数。