HighCharts半饼圈

时间:2014-02-01 09:46:12

标签: javascript highcharts

我正在尝试在HighCharts中构建Semi-pie图表。我只需要为值为45%的半圆提供1个值,在这种情况下,Firfox为45%。我希望当我只提供1个值时,实际上它应该只渲染45%的圆圈,而不是整个100%。我怎么能这样做?

这是我的jsfiddle link

2 个答案:

答案 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>';
            }
        }
    },