热图 - dc.js 和 d3.js使用 JSON 数据

HeatMap - dc.js and d3.js using JSON data

本文关键字:js 使用 JSON 数据 d3 dc 热图      更新时间:2023-09-26

我可以使用 d3.js、dc.js 和交叉过滤器创建热图,使用 CSV 文件中的数据。

法典:

var chart = dc.heatMap("#test");
d3.csv("morley.csv", function(error, experiments) {
  var ndx    = crossfilter(experiments),
      runDim = ndx.dimension(function(d) { return [+d.Run, +d.Expt]; }),
      runGroup = runDim.group().reduceSum(function(d) { return +d.Speed; });
  chart
    .width(45 * 20 + 80)
    .height(45 * 5 + 40)
    .dimension(runDim)
    .group(runGroup)
    .keyAccessor(function(d) { return +d.key[0]; })
    .valueAccessor(function(d) { return +d.key[1]; })
    .colorAccessor(function(d) { return +d.value; })
    .title(function(d) {
        return "Run:   " + d.key[0] + "'n" +
               "Expt:  " + d.key[1] + "'n" +
               "Speed: " + (299000 + d.value) + " km/s";})
    .colors(["#ffffd9","#edf8b1","#c7e9b4","#7fcdbb","#41b6c4","#1d91c0","#225ea8","#253494","#081d58"])
    .calculateColorDomain();
  chart.render();
});

但我想使用 JSON 数据做同样的事情,也许是一个带有一些 JSON 数据的数组。这似乎是一个菜鸟问题,但我找不到任何使用 JSON 数据作为热图的示例。

如果您使用的是 JSON 文件,那么代码将大致相同,只需将d3.csv替换为 d3.json 即可。

如果数据已经加载到浏览器中,那么您可以删除此功能并运行:

var experiments = JSON.parse(json_object) //if json_object is still a string
var ndx = crossfilter(experiments)

其余代码将相同。