HighCharts:基于另一系列的X值在一个系列中获得Y值

时间:2012-08-17 23:35:03

标签: highcharts

我正在HighCharts设置上编写一个点击事件,该设置有两个不同的系列,一个在另一个之上。我希望活动始终在顶级系列上显示一条消息,即使他们点击底部系列也是如此。

我使用的代码如下:

chart = new Highcharts.StockChart({
  chart: {
    renderTo: 'container',
    events: {
      click: function(event) {
        // perform actions

        this.chart.series[1].setData([{
          x: event.point.x,
          y: ??
        }]);
      }

...

我想要做的是根据他们在图表上点击的位置使用第一个系列中的Y值。如何根据这些信息查找Y值?

基本上,如果我点击图表上的某个点,我怎么能根据它的X值在图表上的一个系列中查找一个点。

2 个答案:

答案 0 :(得分:7)

系列对象有一个点对象数组,基本上包含该系列中的所有点,一旦从事件对象中获取给定系列的xValue,就可以迭代这些点来找到最接近的{{ 1}}并返回其对应的x

代码段:

y

用法:

function getYValue(chartObj,seriesIndex,xValue){
 var yValue=null;
 var points=chartObj.series[seriesIndex].points;
 for(var i=0;i<points.length;i++){
    if(points[i].x>=xValue)break;
    yValue=points[i].y;
 }
 return yValue;    
}

小提琴@ http://jsfiddle.net/jugal/3MVGF/

答案 1 :(得分:0)

这应该使用xValue=0

纠正带有负点和点的一些错误
function getyValue(chartObj,seriesIndex,xValue){
    var yValue=null;
    var points=chartObj.series[seriesIndex].points;
    for(var i=0;i<points.length;i++){
        if(points[i].x>xValue)
        {
            break;
        }
        else{
            if(points[i].x==xValue)
            {
                yValue=points[i].y;
                break;
            }
        }
        yValue=points[i].y;
    }
    return yValue;    
}