2013-03-04 68 views
0

实际上,我使用的是Highstock库,并使用PHP和MySQL生成了使用折线图(数据分组)的图表。我正在使用JSON格式来绘制图表。如何在高图中获取每个数据点的ID

我有大约50000条记录来绘制图表,我需要在点击数据点时弹出id

我用我的JSON字符串这样

[ 
[1345575960000,303.38,1], 
[1345575960000,303.32,2], 
[1345575960000,303.25,3], 
[1345575960000,303.17,4], 
[1345575960000,303.09,5], 
[1345575960000,303.01,6] 
] 

在JavaScript中我使用

$.getJSON('data/jsonp.php?filename='+ name +'.json&callback=?', function(data) { 

var jsonData = [], 
dataLength = data.length; 

for (j = 0; j < dataLength; j++) { 
    jsonData.push([ 
     data[j][0], // x value 
     data[j][1], // y value 
     data[j][2] // id 
    ]); 
} 

seriesOptions[i] = { 
    name: name, 
    data: jsonData, 
    events: 
     { 
      click: function(event) 
      { 
       chart.showLoading('Loading data...'); 
       // HOW TO GET HERE THE ID (This is third value in JSON array) 
       chart.hideLoading(); 
      } 
     } 
    }; 
seriesCounter++; 
if (seriesCounter == names.length) { 
     createChart(); 
} 

}); 

谁能帮我显示图表的ID。

在此先感谢。

回答

2

看看包含60000个点和id正确显示的例子。

http://jsfiddle.net/Rpkqa/

series: [{ 
     name: 'Random data', 
     data: (function() { 
      // generate an array of random data 
      var data = [], 
       time = (new Date()).getTime(), 
       i; 

      for (i = 0; i <= 60000; i++) { 
       data.push({ 
        id: 'iddd' + i, 
        x: time + i * 1000, 
        y: Math.round(Math.random() * 100) 
       }); 
      } 
      return data; 
     })() 
    }] 

提示:

tooltip:{ 
     formatter:function(){ 
      console.log(this); 

      return 'point: '+this.y + ' ID: '+this.points[0].point.id; 
     } 
    }, 
+0

我同意给出的例子显示的ID,但当我点击缩放ALL或5M,那么它也出现ID是未定义的。 – Kabir 2013-03-04 13:06:32

+0

因为当你加载这些数据时,数据分组工作,所以你需要禁用它,但你应该知道在这个点上你需要设置巨大的div的widht。 – 2013-03-04 13:18:43

+0

如何禁用数据分组 – Kabir 2013-03-04 13:41:36

1

您需要指定不同的点。试试这个:

[ 
    {x:1345575960000,y:303.38,id:1}, 
    {x:1345575960000,y:303.32,id:2} 
] 

然后您应该能够在evnt处理程序中引用this.id。

+0

亲爱SteveP,我根据你改变了我的JSON字符串,但现在我的图表没有出现 – Kabir 2013-03-04 09:59:31

+0

有没有通过这种方式JSON阵列中的任何限制{x:1345575960000,y:303.38,id:1}, {x:1345575960000,y:303.32,id:2} ] – Kabir 2013-03-04 10:23:50

+0

Yeap,默认限制为1000,参见[turboThreshold](http:// api.highcharts.com/hig hstock#plotOptions.series.turboThreshold)。然而dataGrouping会创建新的点,所有'id'属性将被删除。 – 2013-03-04 11:27:53

相关问题