在交叉点上显示垂直线

时间:2013-02-11 13:18:33

标签: javascript charts highcharts

我正在尝试使用Highcharts代表 Pareto 图表,您可以see here
水平线显示 80%值,但现在我想显示一条垂直线,其中水平80%线与“累积”图表系列相交。

这是我想要实现的一个例子: enter image description here

有办法吗?

另一种选择是获得“累积”样条曲线的“x”值,其中“y”值为“80”,这样我就可以手动绘制线。
这可能是Highcharts API吗?

我知道可以获得一系列中某个点的值,但在这种情况下这还不够:

var point = chart.get('accumulated').data[2];

2 个答案:

答案 0 :(得分:1)

我已经找到了80:20计算。

首先,我从Spline数据中找到了第一个大于或等于80的值。

i.e. >= 80

假设它是DataX 然后找出数组中的索引加上DataX的索引。

i.e. DataX location is DataIndex = index+1

(因为数组从第0次计算开始需要加1)

公式为
DataX : DataIndex :: 80: ?

let the question mark is xIndexOf80

然后xIndexOf80 =(DataIndex * 80)/(DataX)。

xIndexOf80 is nothing but position of 80 on X axis.

,它为您提供X轴上的精确标记

function findInetrSectionPoint(arrSplineData) {

    var intLen = arrSplineData.length;

    for (var index = 0; index < intLen; index++) {

      if (arrSplineData[index] >= 80) {

        interSectPoint = ((index + 1) * 80) / arrSplineData[index] - 1;
        break;
      }

    }

    return interSectPoint;
  }

以下是Plunker

答案 1 :(得分:0)

您可以计算80%点的位置,然后使用http://api.highcharts.com/highstock#Renderer rect。除此之外,您还可以选中此选项http://api.highcharts.com/highstock#Axis.addPlotLine() / http://api.highcharts.com/highstock#yAxis.plotLines