2012-06-13 38 views
1

我正在嘗試使用HighCharts的HTML-table-to-chart腳本從表中創建線圖。從Highcharts中的HTML表中解析日期

我想有一個datetime x軸,所以這裏是我做了什麼:

  • 使用Date.parse(this.innerHTML)到行標題轉換成日期字符串。
  • 在我的xAxis選項對象中設置typedatetime

日期轉換正在工作,並且在默認工具提示中正確顯示,但圖表本身將x值視爲類別,而不是日期時間。我假設它必須如何設置點對象,但我不知道如何解決它。

Highcharts.visualize = function(table, options) { 

    // the categories 
    options.xAxis.categories = []; 

    $('tbody th', table).each(function(i) { 
     var date = Date.parse(this.innerHTML); 
     options.xAxis.categories.push(date); 
    }); 

    // the data series 
    options.series = []; 
    $('tr', table).each(function(i) { 
     var tr = this; 
     $('th, td', tr).each(function(j) { 
      if (j > 0) { // skip first column 
       if (i === 0) { // get the name and init the series 
        options.series[j - 1] = { 
         name: this.innerHTML, 
         data: [] 
        }; 
       } else { // add values 
        options.series[j - 1].data.push(parseFloat(this.innerHTML)); 
       } 
      } 
     }); 
    }); 

    charts[charts.length] = new Highcharts.Chart(options); 
}; 

有什麼建議嗎?

這裏是一個小提琴:http://jsfiddle.net/supertrue/et2Vy/

回答

1

Highcharts把x軸的類別,因爲你告訴它這樣做。
這裏:options.xAxis.categories.push(date);

你將不得不使用{ x: xval, y: yval }(或[xval,yval])爲您的序列數據類型。

+0

我懷疑它必須以這種方式完成 - 因此,基本上,沒有重寫解析器就無法做到這一點。 – supertrue

+0

@supertrue正確。 – dgw

1

您可能已將xAxis設置爲datetime,但是您正在設置類別列表(​​)。你需要做的是將x,y值作爲一個「點」發送到你的data.push中。

0

dateTimeLabelFormats:Object 對於日期時間軸,標度將自動調整爲適當的單位。該成員給出了每個單元使用的默認字符串表示。有關替換代碼的概述,請參閱dateFormat。默認爲: { 秒:'%H:%M:%S', 分鐘:'%H:%M', 小時:'%H:%M', day:'%e。 %b', 周:'%e。 %B ' 月: '%B \' %Y', 年: '%Y' } example on highcharts reference

任何方式,這可能不是正確的答案,希望這有助於:)

+0

從高樓參考資料中獲得,在Axis下, –