2

我正在使用 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 值,但我不确定如何使用它们以及如何从库代码外部访问它们。

任何想法?

4

0 回答 0