javascript - dc.js - 热图的矩形画笔?
问题描述
我希望使用像这样的 dc.js 热图,但使用像散点图中实现的矩形画笔。有没有一种简单(-ish)的方法来实现这一点,而不必自己涉足d3-brush?
我在文档中找不到任何关于这是否可能开箱即用的信息,所以我怀疑不是。默认的行/列/单元格单击工作得很好,但 imo 效率不高(就用户的努力而言),不足以在更大的矩阵中选择单元格。
谢谢!
解决方案
你是对的 - 该功能目前不包含在热图中。
添加它会非常好,但这可能需要一些工作。
同时,如果您愿意稍微调整一下参数,您可以使用散点图获得一个不错的近似值,因为它允许您更改点的大小和形状。
我采用了热图过滤示例,将 a 替换scatterPlot
为heatmap
,更改了一些参数,并得到了一些运行良好的东西:
首先,我们可以设置宽度和高度以适应大小为 15x15 的“点”,就像我们在热图示例中所做的那样 - 除非我们使用散点图时会遇到方点:
.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')
有几种不同的方法可以指示过滤入/出的内容 - 查看scatterPlot 文档以了解其他想法。例如,您也可以使用excludedOpacity
. 但是我发现热图的不透明度有点令人困惑,因为褪色使它看起来只是具有不同的值,而不是完全被排除在外。调味!
最后,散点图使用“真实”d3 轴,因此需要配置 Y 轴以正确显示数字:
heatmapChart.yAxis().tickFormat(d3.format('.4'))
总的来说,我很惊讶这是多么容易,因为它们采用相同的数据格式并且具有大部分相同的参数。
推荐阅读
- apollo - 在 ApolloClient 中,如何在突变完成后但在重新获取查询之前执行函数?
- javascript - 如何“取消最大化”电子窗口?
- python - 我在以下代码中收到索引错误,我很困惑为什么
- kotlin - 测试挂起功能 - 未找到测试(有时)
- microsoft-graph-api - 通过访问令牌连接 MicrosoftTeams
- debugging - xPack gdb 的非活动断点
- python - 导入其父包后调用模块
- javascript - 如何递归地创建带有一组字符的字符串,直到它与所需的字符串匹配?
- javascript - Express.js 中的新 Mongoose Schema `ERR_HTTP_HEADERS_SENT` 错误
- android - 如何在Android socialview中的$字符上添加提及适配器以及@?