HeatMap - 使用JSON数据的dc.js和d3.js

时间:2015-01-15 12:46:34

标签: javascript json angularjs d3.js dc.js

我可以使用d3.js,dc.js和crossfilter创建一个HeatMap,使用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数据的数组。这似乎是一个noob问题,但我无法找到任何使用JSON数据进行热图的示例。

1 个答案:

答案 0 :(得分:4)

如果您正在使用JSON文件,那么代码将基本相同,只需将d3.csv替换为d3.json

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

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

,其余代码将是相同的。