我正在尝试使用Highcharts软件创建一个具有悬停效果的条形图。图表应如下所示:http://www.computerbase.de/2016-02/directx-12-benchmarks-ashes-of-the-singularity-beta/#diagramm-ashes-of-the-singularity-1920-1080
您可以看到,一旦您将图表悬停在图表上,数据标签值就会变为百分比,并显示相对值。
创建图表本身不是问题。但是,更改数据标签是。如何循环所有数据标签,计算相对值并更新标签? API并没有说太多。
$('#container').highcharts({
chart: {
type: 'bar'
},
plotOptions: {
bar: {
dataLabels: {
enabled: true
}
},
series: {
point: {
events: {
mouseOver: function() {
// change text of all data labels
console.log(this);
console.log(this.chart);
}
}
}
}
}
});
答案 0 :(得分:0)
你可以试试这个:
chart.tooltip.options.formatter = function() {
var xyArr=[];
$.each(this.points,function(){
xyArr.push('Serie: ' + this.series.name + ', ' +'X: ' + this.x + ', Y: ' +this.y);
});
return xyArr.join('<br/>');
}
答案 1 :(得分:0)
可以对mouseOver
事件点上设置了新标签的数据执行Series.setData()
。使用dataLabels
format
选项从点数据中获取标签,并在系列中设置key
设置以设置标签信息。
示例:http://jsfiddle.net/pov2dt0q/
$(function() {
var startingData = [
[1, '1'],
[2, '2'],
[3, '3']
],
percentData = [
[
[1, 'x 100%'],
[2, '200%'],
[3, '300%']
],
[
[1, '50%'],
[2, 'x 100%'],
[3, '150%']
],
[
[1, '33%'],
[2, '66%'],
[3, 'x 100%']
]
];
$('#container').highcharts({
series: [{
type: 'bar',
dataLabels: {
enabled: true,
inside: true,
align: 'right',
x: -5,
format: '{point.label}'
},
data: $.extend([], startingData),
keys: ['y', 'label'],
point: {
events: {
mouseOver: function() {
this.series.setData(percentData[this.x]);
},
mouseOut: function() {
this.series.setData(startingData);
}
}
}
}]
});
});