2015-11-12 67 views
0

我有三個陣列從一個JSON字典進來JS以這種方式使用不同的列表中爲每個點的名字:在highcharts JavaScript中

var a=[] 
var b=[] 
var c=[] 
var d = JSON.parse('{{ dictionary | safe}}'); 
for (var key in d) { 
    b.push(d[key]['score']); 
    a.push(key); 
    c.push(d[key]['text']); 
} 

我設法在使用highchat圖表是這樣:

$('#container0').highcharts({ 
      title: { 
       text: 'Daily News {{ name }}', 
       x: -20 
      }, 
      subtitle: { 
       text: 'Source: News.', 
       x: -20 
      }, 
      xAxis: { 
       categories: a 
      }, 
      yAxis: { 
       title: { 
        text: 'Scores' 
       }, 
       plotLines: [{ 
        value: 0, 
        width: 1, 
        color: colors[3] 
       }] 
      }, 
     series: [{ 
       allowPointSelect: true, 
       name: 'news score', 
       data: b, 
       color: colors[2] 
      }] 
     }); 

當我將鼠標懸停/點擊每個品脫時,我會得到該值。我想修改它以顯示數組c中的值。我嘗試了很多方法,但沒有奏效。我非常感謝你的幫助。

+0

你用sort()試過了嗎? – step

+0

我希望文本(數組c)出現在我的圖表中的每個點。什麼是排序? – Nick

+0

您可以重新創建您的示例作爲硬編碼數據的實時演示,僅用於測試? –

回答

0

點的名稱可以通過爲數據點設置屬性name來設置。這是可以做到爲API reference呈現,所以每個點是一個對象,具有name屬性,如:

series: [{ 
     data: [{ 
      name: 'Point 1', 
      y: 1 
     }, 
     ... 

在你的情況陣列[nameString, value]也能發揮作用。

series: [{ 
     data: [ 
      ['Point 1', 1], 
      ... 

的jsfiddle:http://jsfiddle.net/fnmncx6h/

因此,對於您的代碼,你可以使用這樣的事情:

var a=[] 
var b=[] 
var d = JSON.parse('{{ dictionary | safe}}'); 
for (var key in d) { 
    b.push([d[key]['text'], d[key]['score']]); 
    a.push(key); 
} 

,並在以後使用b作爲數據系列。

要設置工具提示的文本,您可以使用API​​中提供的許多格式化函數之一 - 例如, headerFormatpointFormatter