我是 d3.js 的初学者,所以请善待 :)
我有以下数据集:
var dataset = [ [d3.time.hour.utc.offset(now, -5), 1, 10], [d3.time.hour.utc.offset(now, -4), 2, 20], [d3.time.hour.utc.offset(now, -3), 3, 30], [d3.time.hour.utc.offset(now, -2), 4, 40], [d3.time.hour.utc.offset(now, -1), 5, 50], [now, 6, 60], ];
两个问题。
d3 是否提供了一种更好的方法来查找我的数据集数组中的 y 轴数据(除第 0 列之外的所有列,第 0 列是 x 轴(时间))的最大值?目前我只是遍历整个数据集数组并制作第二个数组,不包括第一列。除了我应该完全使用的数组之外,也许还有更好的数据结构?
var data_arr = []; for (row in dataset){ for (col=1;col < dataset[row].length; col++){ data_arr.push(dataset[row][col]); } } var yScale = d3.scale.linear() .domain([0, d3.max(data_arr)]) .range([h - padding, padding]);
一旦解决了,我仍然需要确定如何绘制多个 y 轴值!在我需要多个 y 轴值之前,这很好用:
svg.selectAll("circle") .data(dataset) .enter() .append("circle") .attr("cx", function(d) { return xScale(d[0]); }) .attr("cy", function(d) { return yScale(d[1]); }) .attr("r", 2);
请在此处查看带有代码的图表以获取完整的上下文:http: //jsbin.com/edatol/1/edit 任何帮助表示赞赏!