我正在尝试在HighCharts中构建Semi-pie图表。我只需要为值为45%
的半圆提供1个值,在这种情况下,Firfox为45%。我希望当我只提供1个值时,实际上它应该只渲染45%的圆圈,而不是整个100%。我怎么能这样做?
这是我的jsfiddle link
答案 0 :(得分:1)
我不确定这是否是你想要的:参见示例at jsfiddle
结束角度按45 * 180/100 = 81的比例计算。因此,结束角度为-9。
startAngle: -90,
endAngle: -9,
center: ['50%', '75%']
数据只有一个值:
data: [
['Firefox', 45.0]
]
工具提示更改为显示45%而不是100%
tooltip: {
pointFormat: '{series.name}: <b>{point.y:.1f}%</b>'
},
更新:使用来自@Mark的想法,使用输入endData
来计算data
(请参阅Mark在其答案中的评论)。添加了startAngle
的变量。请参阅更新at jsfiddle:
var data = 45;
var startAngle = -90;
var endAngle = (data/100 * 180) + startAngle;
endAngle = endAngle == 0 ? 0.01 : endAngle;
...
startAngle: startAngle,
endAngle: endAngle,
...
data: [
['Firefox', data]
...
答案 1 :(得分:1)
不要偷窃@AntoJurković的雷声,但他在评论中的想法是实现你想要的最简单的方法。
以下是fiddle的示例。
重要的部分是:
series: [{
type: 'pie',
name: 'Browser share',
innerSize: '50%',
data: [
{y: 45, name: 'Firefox'},
{y: 55, color: 'transparent',dataLabels:{enabled: false}} // instead of the background color, use transparent, and disable dataLabels
]
}]
和
tooltip: {
formatter: function(){
if (this.point.color == "transparent") {
return false; // suppress the tooltips if it has no color
} else {
return this.series.name + ':<b>' + this.point.percentage +'%</b>';
}
}
},