2017-05-04 94 views
0

一週前剛剛開始學習和使用Highcharts。在我的應用程序中,用戶從列表框中選擇一個鍵值,然後從該鍵中檢索一個值數組,並使用這些數據創建多個系列的線圖。在下面的屏幕截圖中,第一個系列(淺藍色)的名稱爲CDEP158,在第二個系列(黑色)中,系列名稱不應該是'Series 2',它應該是CDT158。第二個系列的'系列2'是這裏的問題。 enter image description hereHighcharts第二個系列名稱標記爲'系列2'?

這是圖表數據準備代碼,它接受來自點擊事件中調用的jquery post回調函數的dataChart(結果)。創建Highchart的新實例及其配置

function plotChartData(dataseries, xtitle) 
{ 
    aeChart = new Highcharts.Chart({ 
     chart: { 
      renderTo: 'svgtrendspace', 
      type: 'line', 
      zoomType: 'xy', 
      panning: true, 
      panKey: 'shift', 
      plotBorderWidth: 1 
     }, 
     title: { 
      text: '' 
     }, 
     legend: { 
      layout: 'horizontal', 
      align: 'left', 
      itemDistance: 10, 
      borderWidth: 0, 
      itemMarginTop: 0, 
      itemMarginBottom: 0, 
      padding: 20 
     }, 
     plotOptions: { 
      series: { 
       states: { 
        hover: { 
         enabled: false 
        } 
       }, 
       dataLabels: { 
        enabled: false, 
        format: '{y}' 
       }, 
       allowPointSelect: false 
      } 
     }, 
     xAxis: { 
      type: 'datetime', 
      labels: { 
       rotation: -65, 
       style: { 
        fontSize: '9px', 
        fontFamily: 'Verdana, sans-serif' 
       } 
      } 
     }, 
     yAxis: { 
      gridLineColor: '#DDDDDD', 
      gridLineWidth: 0.5 
     }, 
     series: [{ 
      name: xtitle, 
      data: dataseries, 
      tooltip: { 
       pointFormat: '{series.name}: <b>{point.y}</b><br/>', 
       valueDecimals: 2 
      } 
     }] 
    }); 
}; 

function prepareChartData(dataChart) 
{ 
    var dataSeries = []; 
    var xTitle; 

    for (var i = 0; i < dataChart.length; i++) { 
     var items = dataChart[i]; 
     var xDate = +moment(items.Time); 
     var seriesData = parseFloat(items.Value); 

     dataSeries.push([xDate, seriesData]); 
     xTitle = items.Name; 
    } 

    if (aeChart === undefined || aeChart === null) 
    { 
     plotChartData(dataSeries, xTitle); 
     return; 
    } 

    aeChart.addSeries({ 
     title: xTitle, 
     data: dataSeries 
    }); 
}; 

功能,這是爲什麼第一個系列得到正確的名稱,但在第二個它沒有?我的highcharts配置是否錯誤?我應該如何正確配置或格式化以解決該問題?

我用它搜索了與多個系列相關的類似問題,但我找不到任何類似的問題或答案,可以幫助我。

任何幫助,非常感謝。

回答

0

它適用於第一系列的事實意味着問題不在於您的代碼,而在於您的init。

您可以在上述函數中調用aeChart.addSeries()之前就發出console.log('Title: ' + xTitle);聲明,以檢查您傳遞的內容嗎?我懷疑第二個系列賽沒有通過冠軍頭銜,因此HighCharts將自行加入Series2。

也許你不應該在初始for循環的每次迭代中設置xTitle的值?

+0

這是一個很好的建議,我將看看'console.log'的'xTitle'值。而且,我意識到'addSeries()'選項'title'屬性應該是'name'。我認爲這是真正的問題。但是,我將首先更改腳本並運行我的應用程序進行確認。 – Juniuz

+0

是的,將'title'改爲'name'; –

+0

@PawełFus,它現在可以工作。系列的實際名稱現在正確顯示。感謝您的幫助。 – Juniuz