gpt4 book ai didi

javascript - 在 D3.js 中向 3D 饼图添加标签

转载 作者:行者123 更新时间:2023-11-30 17:15:58 26 4
gpt4 key购买 nike

在此示例中,我试图重新创建 3D 饼图:http://bl.ocks.org/NPashaP/9994181

这是我的版本:http://jsfiddle.net/26v6cc8x/1/

var salesData=[
{label:"Basic", color:"#3366CC"},
{label:"Plus", color:"#DC3912"},
{label:"Lite", color:"#FF9900"},
{label:"Elite", color:"#109618"},
{label:"Delux", color:"#990099"}
];

var svg = d3.select("body").append("svg").attr("width",700).attr("height",400);

svg.append("g").attr("id","quotesDonut");

Donut3D.draw("quotesDonut", randomData(), 450, 150, 250, 150, 50, 0);

function changeData(){
Donut3D.transition("quotesDonut", randomData(), 250, 150, 50, 0);
}

function randomData(){
return salesData.map(function(d){
return {label:d.label, value:1000*Math.random(), color:d.color};});
}

$(".btn-change").click(function(){
changeData();
});

我的问题是,如何在饼图外添加实际数据标签(而不是计算的百分比)并确保它们在转换后保持正确的位置?这意味着我希望同时显示百分比和标签。

非常感谢任何帮助。谢谢!

最佳答案

Donut3D.js 中更改以下函数:

function getPercent(d){
return (d.endAngle-d.startAngle > 0.2 ?
Math.round(1000*(d.endAngle-d.startAngle) / (Math.PI * 2)) /10 + '%' : '');
}

对此:

function getPercent(d) {
return (d.endAngle - d.startAngle > 0.2 ?
d.data.label + ': ' + Math.round(1000 * (d.endAngle - d.startAngle) / (Math.PI * 2)) / 10 + '%' : '');}

这会将标签作为图表中显示的百分比值的前缀。

希望这对您有所帮助!

关于javascript - 在 D3.js 中向 3D 饼图添加标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26126756/

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