我的 x,y 值由 unix 纪元时间(大约一年)和一个整数组成。我用这个绘制 x 轴:
x_axis = new Rickshaw.Graph.Axis.Time
graph: graph
结果看起来不错,但刻度线是基于日期的(我假设),我在周末什么都没有发生时会下降。我想按周汇总。人力车是否可以将同一周内所有时间的 y 值组合在一起?
这是一个有效的 jsfiddle:http: //jsfiddle.net/jTmWC/
我的 x,y 值由 unix 纪元时间(大约一年)和一个整数组成。我用这个绘制 x 轴:
x_axis = new Rickshaw.Graph.Axis.Time
graph: graph
结果看起来不错,但刻度线是基于日期的(我假设),我在周末什么都没有发生时会下降。我想按周汇总。人力车是否可以将同一周内所有时间的 y 值组合在一起?
这是一个有效的 jsfiddle:http: //jsfiddle.net/jTmWC/
您可以使用以下代码每月汇总数据:
var aggregated = d3.nest()
.key(function(d) { return (new Date(+d.x * 1000)).getMonth(); })
.rollup(function(d) { return d3.sum(d, function(e) { return +e.y; }); })
.entries(data)
.map(function(d) { return {x: +d.key, y: d.values}; });
在这里更新了 jsfiddle 。请注意,我还更改了轴的时间单位——您可能需要稍微调整一下以使其显示您想要的标签。
如果您不想使用 d3 来转换数据,您可以随时选择使用 underscorejs。它在大多数 javascript 项目中非常容易理解和有用。我在人力车的截屏视频中做了完全相同的事情:http: //tagtree.tv/d3-with-rickshaw-and-angular