0

我正在使用 Highstock - 单线系列来绘制数据。http://www.highcharts.com/stock/demo/basic-line。我想知道如何根据触发器在某些点上创建标记。如果 y 轴突然增加,我想在该点上创建一个标记(即从 460 到 470 突然增加,我想在470)。我想在客户端级别做。我该怎么做。任何人都可以帮助解决这个问题。附加屏幕截图,理想情况下我需要什么。我想在屏幕截图中突出显示的红色圆圈上创建标记。 在此处输入图像描述

4

2 回答 2

1

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

屏幕截图:

在此处输入图像描述

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
                }
            }]
        });
    });

});
于 2013-08-21T13:48:41.257 回答
0

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

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

但是,如果您将有很多点,data将是一个空数组或将有分组数据。

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

于 2013-08-21T11:08:01.083 回答