Highcharts中的径向饼图数据标签

时间:2015-11-12 16:20:26

标签: javascript jquery css highcharts

如何将数据标签置于饼图(内部)的楔形中心并对齐饼图半径而不是水平或垂直。这是我所追求的形象。

如果某个插件不是一个开箱即用的功能,也许有人有插件?

甚至一些实验性代码也会有用。

enter image description here

1 个答案:

答案 0 :(得分:6)

Highcharts不提供饼图中自动旋转数据标签的选项。您可以为dataLabels rotation编写自定义函数。

以下是如何做到这一点的简单示例:

var allY, angle1, angle2, angle3,
    rotate = function () {
        $.each(options.series, function (i, p) {
            angle1 = 0;
            angle2 = 0;
            angle3 = 0;
            allY = 0;
            $.each(p.data, function (i, p) {
                allY += p.y;
            });

            $.each(p.data, function (i, p) {
                angle2 = angle1 + p.y * 360 / (allY);
                angle3 = angle2 - p.y * 360 / (2 * allY);
                p.dataLabels.rotation = -90 + angle3;
                angle1 = angle2;
            });
        });
    };

首先,我计算所有Y值的总和。然后我计算所有饼图中间的角度。然后我以相同的角度旋转数据标签。

例如: http://jsfiddle.net/izothep/j7as86gh/6/