2012-12-05 37 views
1

我使用highcharts來顯示兩個系列的數據。第一個是主要數據,第二個是根據初始數據計算的趨勢線。麻煩的是,當更改圖表類型時,它將趨勢線計數爲一個相同的系列,並與第一個一起進行堆疊/繪製。在Highcharts中更改圖表類型時修復/折扣數據系列

我試圖之一:

  • 離開趨勢線數據作爲虛線型和改變只在主數據圖表類型
    - 或 -
  • 刪除/貼現趨勢線,如果它不可能保持原樣。

我把確切的問題放在jsfiddle here上。

的HTML下拉列表:

<select id="chartType"> 
    <option value="spline">Spline</option> 
    <option value="line">Line</option> 
    <option value="column">Column</option> 
    <option value="area">Area</option> 
</select> 

我使用更改圖表類型的功能:

$('#chartType').change(function(){ 
     changeType(chart.series, this.value); 
}); 

    function changeType(series, newType) { 

     serie = series[0]; 
     serie.chart.addSeries({ 
     type: newType, 
     name: serie.name, 
     color: serie.color, 
     data: serie.options.data 
     }, false); 

     serie.remove(); 
    chart.redraw(); 
    } 

我在我的函數中使用series[0]作爲主要數據 - 因爲它是第一個要加載的系列,但是當我隨機循環下拉選項時,它似乎幾乎循環了這個系列 - 改變趨勢線的圖表類型...就好像在更改類型後更新的系列順序交換一樣!

任何想法/黑客/解決方案?

的一系列數據:

series: [ 
    { 
    lineWidth: 6, 
    name: 'Primary data', 
    data: [59.359,60.395,68.830,70.290,73.259,81.344,60.113,60.113,80.644,110.929,96.731,78.104] 
    }, 
    { 
    lineWidth: 3, 
    dashStyle: 'dash', 
    name: 'Trend-line', 
    color: '#999999', 
    shadow: 0, 
    data: [59.259,62.123,64.986,67.850,70.714,73.577,76.441,79.305,82.168,85.032,87.896,90.759] 
    } 
] 

回答

1

發生了什麼事是你正在尋找[0]每個時間序列。但是因爲您每次刪除趨勢線並添加一個新的趨勢線,系列[0]每次都會更改。

所以,你需要做的是增加一致性的感覺,就像這樣:

for (i = 0 ; i < series.length ; i++) { 
     if (series[i].name == 'Primary data') { 
      serie = series[i]; 
     }     
    }    
    // serie = series[0]; 
+0

我知道這是圍繞'addseries()',但你釘在它之前,我到了那裏!謝謝。 – nickhar

相關問題