2012-10-14 56 views
2

我真的需要幫助。HighCharts生成表

基於this question我試圖從高圖表生成表。

在此Fiddle表生成正常,但我需要的數據值爲文本,而不是數字格式。

我覺得格式需要在該行需要改變,但我不知道......

Highcharts.numberFormat(series[i].data[category_index].y, valueDecimals) + valueSuffix, 

是否有可能實現這一目標?

+0

您需要文本中的數據值 - 這是什麼意思? 「9.5 C」不是文字? –

+0

C是valueSuffix添加到數據槽功能。我需要的是格式化數據,以便我可以使用文本,而不僅僅是系列數據中的數字。所以東京將會有'一','二','9.5 C'等選項,女巫並不適用於醫療劇本。 – Ivan

+0

@伊萬,仍然不清楚如何在您的jsFiddle中顯示的「7.0 C」不符合您的要求。 「7.0 C」的預期文字是什麼? – wergeld

回答

5

您無法用文本替換數據值並顯示數據值的原因是因爲您正在將數據類型定義爲十進制數,並使用Highcharts.numberFormat將y值變成小數。由於您嘗試放入文本,因此無法將字符串格式化爲小數,因此它爲空。現在,你不能簡單地拿出那個Highcharts.numberFormat電話並且完成這項工作。 HighCharts數據系列需要數字y值。所以,要做你想做的事情,我們使用一個名爲Note的未記錄點屬性。

這是我的嘗試。 如果您想要使用HighCharts在SVG/VML中創建表,您可以執行以下操作。 創建一個數據系列是這樣的:

{ 
     name: 'Tokyo', 
     data: [{ 
      y: 7.0, 
      Note: 'note 1'}, 
     { 
      y: 6.9, 
      Note: 'note 2'}, 
     { 
      y: 9.5, 
      Note: 'note 3'}, 
     { 
      y: 14.5, 
      Note: 'note 4'}, 
     { 
      y: 18.2, 
      Note: 'note 5'}, 
     { 
      y: 21.5, 
      Note: 'note 6'}, 
     { 
      y: 25.2, 
      Note: 'note 7'}, 
     { 
      y: 26.5, 
      Note: 'note 8'}, 
     { 
      y: 23.3, 
      Note: 'note 9'}, 
     { 
      y: 18.3, 
      Note: 'note 10'}, 
     { 
      y: 13.9, 
      Note: 'note 11'}, 
     { 
      y: 9.6, 
      Note: 'note 12'} 
             ], 
     visible: false} 

現在,而不是循環的y值你會遍歷所有的Note項目,就像你以前只能用數字的東西去掉:

$.each(series, function(i) { 
    renderer.text(series[i].data[category_index].Note, cellLeft + colWidth - cellPadding, tableTop + (i + 2) * rowHeight - cellPadding).attr({ 
     align: 'right' 
    }).add(); 
}); 

這裏是一個jsFiddle(只有一個系列更新使用Note語法,但你明白了)。

+0

正是我在找什麼! – Ivan

+0

不幸的是,鏈接的jsFiddle不再有效。 – JohnnyHK

+1

@JohnnyHK,3年來發生了很大變化。儘管基本的代碼應該指向正確的方向。這裏有一個活的,有用的例子:http://jsfiddle.net/zRkgQ/218/。請注意,我沒有渲染圖形,只有東京將'note'項目添加到表格中。 – wergeld