我有一个允许我动态添加系列到我的高图的功能。 (我将他们的名字作为整数值添加到系列中,然后按升序排序)。
$('#addSeries').on('click', function() {
//first check if value is already a series
var seriesid = document.getElementById('txtValue').value;
getSeriesIDIndex(seriesid, function(idindex) {
//if it doesnt exist, add it to chart
if (idindex == -1) {
categories.push(parseInt(seriesid));
categories = categories.sort(sortNumber);
chart.yAxis[0].setCategories(categories, false);
getCategoryIndex(parseInt(seriesid), function(cindex) {
chart.addSeries({name: seriesid, data: [{x: currentDate.getTime(), y: cindex}]}, false);
for (i = 0; i < chart.series.length; i++) {
(function(i) {
getCategoryIndex(chart.series[i].name, function(cindex) {
for (y = 0; y < chart.series[i].data.length; y++) {
chart.series[i].data[y].y = cindex;
chart.redraw();
}
});
})(i);
}
chart.redraw();
});
}
});
首先添加一个系列&#34; 123&#34;,然后&#34; 44&#34;并且它将无法正常显示...但是然后添加另一个系列&#34; 555&#34;它会被正确地重新绘制。这些的类别indeces对于44表示0,13表示为123,而555表示2(因为我希望按升序保留系列类别)。因此,当添加一个比其他类别更低价值的系列类别时,它似乎无法正确重绘
我还创建了一个jsfiddle:http://jsfiddle.net/5L59r1qt/17/
答案 0 :(得分:0)
请查看http://jsfiddle.net/qner9hwc/1/
getCategoryIndex(parseInt(seriesid), function (cindex) {
chart.addSeries({
name: seriesid,
data: [{
x: currentDate.getTime(),
y: cindex
}]
}, false);
for (i = 0; i < chart.series.length; i++) {
var cur_series = chart.series[i];
var cur_cindex;
getCategoryIndex(chart.series[i].name, function (cindex) {
cur_cindex = cindex;
});
for (var z = 0; z < cur_series.data.length; z++) {
if (cur_series.data[z].y >= cindex && cur_series.name !== seriesid) {
console.log('change!' + cur_series.data[z].y);
cur_series.data[z].y = cur_cindex;
}
}
}
console.log(chart.yAxis[0].categories);
chart.redraw();
});
y值现在相应地改变了;
然而现在yaxis有点太高了。也许其他人可以弄清楚为什么会这样。 (查看状态悬停时的工具提示,现在值是正确的)