2013-02-11 98 views
0

我想表示您使用Highcharts的帕累托图表,因为您可以see here
水平线显示80%值,但现在我想显示一条垂直线,其中水平80%线与“累积”图表系列相交。在交叉点上显示垂直线

这是我想要达到一个例子: enter image description here

有没有办法做到这一点?

另一种方法是获取“Acumulated”样条曲线的“x”值,它的“y”值是“80”,这样我就可以手动绘制曲线了。
这是甚至有可能与Highcharts API

我知道这是可能得到的一系列点的数值,但这是不够的,在这种情况下:

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

你找到that.I现在面临同样的问题的任何解决方案。 – 2015-08-28 07:34:48

+0

@RIYAJKHAN这是一段时间以前,但我不认为我可以,对不起。如果您设法找到解决方案,请将其添加为答案。 – 2015-08-28 11:27:41

+1

是的,我已经找到它使用基本的数学形式 – 2015-08-31 04:12:18

回答

0
+0

这里的一个大问题是,当“y”是80%时,如何计算“x”位置? – 2013-02-13 14:05:51

+0

您可以根据海图面积像素计算您的位置。 http://jsfiddle.net/yr779/4/ – 2013-02-14 14:09:54

+0

感谢您的帮助,塞巴斯蒂安。也许我没有很好地解释自己。当我说“80%”时,我是指“累积”系列(深红色样条)中的值,以便在与水平绿色虚线相交时绘制垂直线。您的示例在可用图表宽度的80%处显示一条垂直线。我错了吗? – 2013-02-14 14:55:54

1

我已经找到它为80:20计算。

首先我找到串联从样条数据,其大于80。

i.e. >= 80 

第一值或等于假设它是DataX 然后找出阵列的该索引加一DataX

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

(如阵列从第0计算需要加一开始)

式是
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