当新数据的列(类别)比以前更少时,我遇到了更新highcharts图表的问题。
小提琴:http://jsfiddle.net/ggoforth/bZAF7/
考虑我有一个类似的图表:
var chart = new Highcharts.Chart({
chart: {
renderTo: 'container',
type: 'column'
},
xAxis: {
categories: ['pizza', 'french fries']
},
series: [{
data: [55, 32]
}]
});
这将呈现包含两列的柱形图。然后,通过一些按钮我做:
chart.series[0].setData([55, 32, 17], false);
chart.xAxis[0].setCategories(['pizza', 'french fries', 'nachos'], false);
chart.redraw();
然后,这将更新图表以包含三列。这一切都很好。但是,如果以后再次使用2列刷新图表:
chart.series[0].setData([55, 32], false);
chart.xAxis[0].setCategories(['pizza', 'french fries'], false);
chart.redraw();
我收到错误“选项未定义”。这是可重复的,这里有一个小问题:http://jsfiddle.net/ggoforth/bZAF7/
在设置新数据之前,我是否需要先在图表上进行某种“重置”?就像我说的那样,当从2列开始时它起作用 - > 3列,但反之亦然。
感谢您的帮助!
答案 0 :(得分:2)
如果你删除系列并重新添加它,它会起作用:
try {
chart.series[0].remove();
chart.addSeries({});
chart.series[0].setData([55, 32], false);
chart.xAxis[0].setCategories(['pizza', 'french fries'], false);
chart.redraw();
} catch (e) {
alert(e);
}
更新了小提琴here。
答案 1 :(得分:2)
您可以删除以下行:
chart.xAxis[0].setCategories(['pizza', 'french fries'], false);
<强> Demo 强>
正如您所看到的,问题是您的新数据不能少于您的类别编号,因此您必须先更新您的类别而不是您的系列。如下例所示。
http://jsfiddle.net/bZAF7/6/
因此,要解决此问题,您必须撤消以下行。
chart.series[0].setData([55, 32], false);
chart.xAxis[0].setCategories(['pizza', 'french fries'], false);
更新:正如Greg在评论中所说,这是来自Highcharts https://github.com/highslide-software/highcharts.com/issues/970的一个错误,可能它已经修复了最新的Highcharts版本。