我正在使用 NVD3 库来显示堆叠的 multiBarChart。我还需要在每个条上添加一条水平线 (---) 以指示平均值的位置。
我认为最后一组数据(系列)是平均值。
test_data = [
{"key":"Series 1", "values":[{"x":0,"y":30},{"x":1,"y":15},{"x":2,"y":10}]},
{"key":"Series 2", "values":[{"x":0,"y":2},{"x":1,"y":7},{"x":2,"y":3}]},
{"key":"Average","values": [{"x":0,"y":6},{"x":1,"y":4},{"x":2,"y":40}]}
];
我设法选择了最后一个系列,并将高度更改为 1 以模拟一条线而不是正方形。我还设法通过更改“y”的值来垂直控制线的位置:
var lastBars = $('.nv-group:last rect');
lastBars.attr('height', 2);
lastBars.attr('y',function(a, y, c){
return parseFloat(y) + 50;
});
为了将“水平线”放置在屏幕右侧的 Y 上,我需要了解如何将随数据提供的“y”缩放到屏幕上相应的“Y”,以与 Y 轴上的正确值对齐。
我正在阅读 NVD3 的源代码,它似乎正在使用 yDomain 和 yScale 来计算屏幕 Y 值,但我不确定如何使用它们以及如何从库代码外部访问它们。
任何想法?