2013-08-21 28 views
0

我正在使用Highstock - 单行系列来绘制数据。 http://www.highcharts.com/stock/demo/basic-line。 我想知道如何创建基于触发器的某些点上的标记。如果突然增加发生在y轴上,我想在该点上创建一个标记(即突然增加发生从460到470,我想创建一个标记在470)。我想在客户端做到这一点。我可以做到这一点。任何人都可以帮助这个。附件截图,理想情况下,我需要。我想在屏幕截图中突出显示的红色圆圈上创建标记。 enter image description hereHighstock - 单行系列 - 基于触发器动态创建标记

+0

请附上草图或图像来表示你所需要的确切 – AdityaSaxena

+0

@ aditya..attached截图 – vmb

+0

当点之间的差异是10(例如:460至470或780至790) – vmb

回答

0

启用dataGrouping时为点设置标记可能有点问题。这需要使用:

chart.series[0].data[index].update({ 
    marker: { 
    enabled: true 
    } 
}); 

但是,如果你有一分不少,data将是一个空数组或将分组数据。

这就是为什么我想建议另一种解决方案 - 使用标志或分散系列。然后,您只需添加空白系列,然后触发您添加/删除点。

1

道歉花了那么多时间。我想彻底地为您提供答案,然后还有工作:-)。这里有一个工作演示:JSFIDDLE

截屏:

enter image description here

JS:

$(function() { 

    $.getJSON('http://www.highcharts.com/samples/data/jsonp.php?filename=aapl-c.json&callback=?', function(data) { 
     // Create the chart 
     var myChart = $('#container').highcharts('StockChart', { 

      rangeSelector : { 
       selected : 1 
      }, 

      chart:{ 
       events:{ 
        load: function(){ 
         var l = this.series[0].points.length; 
         var p = this.series[0].points[l - 1]; 
         var i=0; 
         for(i = 1; i<l ; i++){ 
          if(this.series[0].points[i].y - this.series[0].points[i-1].y > 10){ 
           console.log(this.series[0].points[i].y); 
           this.series[0].points[i].update({ 
            marker: { 
             enabled: true 
            } 
           }); 
          } 
         }       
        } 
       } 
      }, 

      title : { 
       text : 'AAPL Stock Price' 
      }, 

      series : [{ 
       name : 'AAPL', 
       data : data, 
       tooltip: { 
        valueDecimals: 2 
       } 
      }] 
     }); 
    }); 

}); 
+0

感谢aditya..i会测试它.. – vmb

+0

@ vmb为您做了解决方案吗? – AdityaSaxena

+0

@ AdityaSaxena ..我试过。但我在console.markers错误不显示.Uncaught TypeError:无法读取属性'长度'null highstock.js:153 – vmb