gpt4 book ai didi

javascript - Highcharts:将数据标签放置在饼图各部分的中间

转载 作者:行者123 更新时间:2023-11-29 14:41:03 26 4
gpt4 key购买 nike

我希望饼图的数据标签显示在各部分的中间,而不管:

  1. 是否切片
  2. plotOptions中的size属性是否被提及

解决方案一

为此,我尝试使用 plotOptions 的距离属性。我在图表的 load() 事件中从 series[0].points[0].shapeArgs.r 获得了半径。然后使用以下内容:

series[0].update({
dataLabels: {
distance: -(radius/2)
}
});

http://jsfiddle.net/k94x958d/2/

但这带来了两个问题:饼图加载动画丢失,如果任何部分被切片,数据标签放置不正确

http://jsfiddle.net/k94x958d/3/

方案二

为了解决动画问题,我尝试使用上述逻辑来获取距离,然后在 series[0].options.dataLabels 中重写 Highcharts 库的 drawDataLabels() 方法中进行设置。但它没有用。

有什么方法可以将数据标签放置在饼图部分的中间,而不考虑大小、切片等?

最佳答案

我们可以在load事件中使用如下代码:

 series[0].update({
animation: true,
dataLabels: {
distance: -(series[0].points[0].shapeArgs.r/2)
}
});

_.each( series[0].points, function( point ) {
var x = point.slicedTranslation.translateX + point.dataLabel.translateX,
y = point.slicedTranslation.translateY + point.dataLabel.translateY;

point.dataLabel.attr( {
transform: 'translate(' + x + ',' + y + ')'
} );
});

上面的代码解决了切片和大小的问题。调用 attr() 似乎可以保留动画。仍然存在的唯一问题是动画因调用 update() 而丢失。

[编辑]由于切片而翻译数据标签的方式,是否有任何方法可以使用 attr() 将它们翻译到部分的中间?

[编辑]解决了.. 只需将 animation: true 放入 update() 即可。

关于javascript - Highcharts:将数据标签放置在饼图各部分的中间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38222509/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com