【发布时间】:2013-09-22 06:11:54
【问题描述】:
我有一个使用 NVD3.js 的有效堆积面积图:working jsfiddle here
var volumeData = [{"key":"Hit","values":[[1.3781628E12,12],[1.3782492E12,9],[1.3783356E12,9],[1.378422E12,4],[1.3785084E12,2],[1.3785948E12,3],[1.3786812E12,6],[1.3787676E12,5],[1.378854E12,1],[1.3789404E12,5],[1.3790268E12,1],[1.3791132E12,3],[1.3791996E12,0],[1.379286E12,2],[1.3793724E12,0]]},{"key":"Miss","values":[[1.3781628E12,3],[1.3782492E12,3],[1.3783356E12,1],[1.378422E12,12],[1.3785084E12,4],[1.3785948E12,7],[1.3786812E12,10],[1.3787676E12,13],[1.378854E12,14],[1.3789404E12,8],[1.3790268E12,5],[1.3791132E12,2],[1.3791996E12,3],[1.379286E12,11],[1.3793724E12,6]]}];
(function(data){
var colors = d3.scale.category20();
keyColor = function(d, i) {return colors(d.key)};
var chart;
nv.addGraph(function() {
chart = nv.models.stackedAreaChart()
.x(function(d) { return d[0] })
.y(function(d) { return d[1] })
.color(keyColor);
chart.xAxis.tickFormat(function(d) { return d3.time.format('%x')(new Date(d)) });
chart.yAxis.tickFormat(d3.format('d'));
d3.select('#graph svg')
.datum(data)
.transition().duration(0)
.call(chart);
//nv.utils.windowResize(chart.update);
return chart;
});
})(volumeData);
我想做的是在可见的 x 范围内为每个系列添加一条“平均”线。我可以轻松计算每个系列的平均值,我只是不知道如何让线显示在图表上。
是否可以使用 nvd3.js,或者我必须下拉到 d3 才能做到这一点?
【问题讨论】:
-
您必须使用 D3 来执行此操作。 NVD3 不提供此功能。
-
很公平。你能解释一下怎么做吗?
-
您可能想要修改 NVD3 的来源,以便您可以访问所有的刻度等。或者,您可以使用纯 D3。当然,您也可以简单地将平均值添加为单独的数据系列。
-
将其添加为单独的数据系列可能适用于普通折线图,但在堆积面积图中,这样做会(至少,我认为)增加覆盖的总面积,而不是覆盖它.
标签: javascript d3.js nvd3.js