2013-08-21 27 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