我正在使用条形图。我想在已经绘制的现有条形图中添加新条形。
怎么做? 我使用了以下
chartObject.series[i].addPoint(99, true);
但没有得到结果。它会自动使用默认标签名称添加值。
我想插入一个值为A 的E栏。我怎么能这样做?
chartObject = Highcharts.chart('chartContainer', {
chart: {
type: 'bar'
},
title: {
text: ''
},
xAxis: {
categories: ["A", "B", "C", "D"],
title: {
text: null
}
},
yAxis: {
min: 0,
},
plotOptions: {
bar: {
dataLabels: {
enabled: true
}
},
series: {
cursor: 'pointer',
point: {
events: {
click: function () {
debugger
for (var i = 0; i < chartObject.series.length; i++) {
chartObject.series[i].addPoint(99, true);
}
alert('Category: ' + this.category + ', value: ' + this.y);
}
}
}
},
showInLegend: false
},
legend: {
enabled: false
},
credits: {
enabled: false
},
tooltip: {
enabled: false
},
series: [{
showInLegend: false,
data: [
50,
35,
25,
80
]
}]
});
答案 0 :(得分:1)
请参阅此jsfiddle:http://jsfiddle.net/kkulig/rhneon2q/
我认为其中一种方便的方法是将类别定义移动到点的 name 属性:
data: [
{y: 50, name: 'A'},
{y: 35, name: 'B'}
]
并将xAxis类型更改为category:
type: 'category'
这里解释了:http://api.highcharts.com/highcharts/xAxis.categories
然后你可以用这样的新点更新图表:
<强>更新强>
代码:
chartObject.series[i].addPoint({y: this.y, name: 'E'}, true);
在系列结尾处添加带有类别的新点。
如果您想在点击后出现类别的新点,则可以使用此代码:
var data = chartObject.userOptions.series[i].data.slice(); // clone original userOptions
data.splice(this.index + 1, 0, {
y: 10,
name: "New cat. " + (chartObject.series[i].data.length - 2) // 2 - initial categories number
});
chartObject.series[i].update({
data: data
});
END OF UPDATE
不幸的是,如果您像以前一样设置类别:
categories: ["A", "B", "C", "D"]
添加点的名称属性不会被用作类别。