我一直在尝试使用Highcharts实现饼图,但是在极低分辨率被裁剪的数据标签上遇到了问题。
我尝试使用formatter:function()添加一个windows.resize但是失败了。
以下是我目前使用的代码:
// Radialize the colors
Highcharts.getOptions().colors = $.map(Highcharts.getOptions().colors, function(color) {
return {
radialGradient: { cx: 0.5, cy: 0.3, r: 0.7 },
stops: [
[0, color],
[1, Highcharts.Color(color).brighten(-0.3).get('rgb')] // darken
]
};
});
// Build the chart
chart = new Highcharts.Chart({
chart: {
renderTo: 'container',
plotBackgroundColor: null,
plotBorderWidth: null,
plotShadow: false,
backgroundColor: {
linearGradient: [0, 0, 500, 500],
stops: [
]
},
},
title: {
text: 'Header Here'
},
tooltip: {
pointFormat: '{series.name}: <b>{point.percentage}%</b>',
percentageDecimals: 0
},
plotOptions: {
pie: {
allowPointSelect: false,
cursor: 'pointer',
dataLabels: {
enabled: true,
color: '#000000',
connectorColor: '#000000',
formatter: function() {
return '<b>'+ this.point.name +'</b>: '+ Math.round(this.percentage) +'%';
}
}
}
},
series: [{
type: 'pie',
name: 'Votes',
data: [
['Vote One', 50],
['Vote Two', 50],
['Vote three', 2]
]
}]
});
除了在调整大小上创建新图表以外,是否还可以将标签设置为false / hidden?并再次显示在某个分辨率之上?
非常感谢
答案 0 :(得分:3)
您可以将useHTML设置为true,用于datalabels,并在formatter中定义您自己的div。然后,当您捕获调整大小事件时,请使用show / hide functons。
点击按钮后显示/隐藏数据标签的简单示例如下:
chart = new Highcharts.Chart({
chart: {
renderTo: 'container',
type: 'line'
},
title: {
text: 'Monthly Average Temperature'
},
plotOptions: {
series: {
dataLabels: {
enabled: true,
useHTML: true,
formatter: function () {
return '<div class="datalabel">' + this.y + '</div>';
}
}
}
},
series: [{
data: [7.0, 6.9, 9.5, 14.5, 18.2, 21.5, 25.2, 26.5, 23.3, 18.3, 13.9, 9.6]
}]
}, function (chart) {
$('#btn').toggle(function () {
$('.datalabel').hide();
}, function () {
$('.datalabel').show();
});
});