我正在尝试使用Highcharts代表 Pareto 图表,您可以see here。
水平线显示 80%值,但现在我想显示一条垂直线,其中水平80%线与“累积”图表系列相交。
这是我想要实现的一个例子:
有办法吗?
另一种选择是获得“累积”样条曲线的“x”值,其中“y”值为“80”,这样我就可以手动绘制线。
这可能是Highcharts API吗?
我知道可以获得一系列中某个点的值,但在这种情况下这还不够:
var point = chart.get('accumulated').data[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