我使用highcharts制作一个包含多个系列的图表(19)。我希望每个系列都有多个点,所以它用第一组数据创建第一个系列,然后只为每个系列添加点:
$(document).ready(function() {
chart = new Highcharts.Chart({
chart: {
renderTo: 'container',
defaultSeriesType: 'line',
events: {
load: function() {
var rawArray = <%- dataArray %>;
var array = {};
var chart = this;
for (var i = 0; i < rawArray.length; i++) {
var entry = rawArray[i];
var str = entry.timestamp.toString();
var time = str.slice(0, -3);
var array = [
[parseInt(time), entry.price]
];
if (i < 18) {
$('#container').highcharts().addSeries({
name: entry.name,
id: entry.id,
data: array
});
} else {
$('#container').highcharts().series[entry.id].addPoint(array, false, true);
}
}
}
}
},
title: {
text: 'Title'
},
xAxis: {
type: 'datetime',
tickPixelInterval: 150
},
yAxis: {
minPadding: 0.2,
maxPadding: 0.2,
title: {
text: 'Value',
margin: 80
}
}
});
});
所以前19个系列添加得很好但是在我的控制台中出现了这条消息:&#39; Uncaught TypeError:无法读取属性&#39; addPoint&#39;未定义的&#39;受到$('#container').highcharts().series[entry.id].addPoint(array, false, true);
我想知道你们是否有我的解决方案,我们真的很感激!
答案 0 :(得分:2)
尝试https://jsfiddle.net/Cuchu/99x477sb/5/
for (var i = 0; i < rawArray.length; i++) {
var entry = rawArray[i];
var id = entry.id;
var str = entry.timestamp.toString();
var time = str.slice(0, -3);
var array = [[parseInt(time), entry.price]];
var array_to_point = [parseInt(time), entry.price];
console.log(array);
if (i < 18) {
$('#container').highcharts().addSeries({
name: entry.name,
id: entry.id,
data: array
});
} else {
$.each(this.series, function(i, v){
serieId = chart.series[i].options.id;
if(serieId == id) {
chart.series[i].addPoint(array_to_point,false);
}
//chart.series[i].addPoint(series[serieId], false);
});
//console.log(this.series);
//$('#container').highcharts().series[id].addPoint(array, false, true);
//$('#container').highcharts().get(entry.name).addPoint(array, false, true);
}
}
this.redraw(true);
我的英语更基本,但我试着说明一下。 当您设置id:entry.id时,系列的id在chart.series [i] .options.id中定义,i不是id,因为它是系列图的索引。
var array = [[parseInt(time), entry.price]];
var array_to_point = [parseInt(time), entry.price];
在第一次运行数组中定义数据serie = array(points)where points = array(time,value).. ok?然后在addpoint中,修改为添加点数据arra_to_point = [time,value] ..
在完成时,重绘图表..
我用Highcharts完成了很多工作,并且总是要查看元素的内容以获取脉冲