首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >定制D3.js甜甜圈图

定制D3.js甜甜圈图
EN

Stack Overflow用户
提问于 2015-12-02 08:41:54
回答 1查看 626关注 0票数 2

我想用d3.js创建一个像上面这样的甜甜圈,但是我不能做一个。我可以用d3.js做一个正常的甜甜圈。

请有人知道如何用d3.js制作这个甜甜圈吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-12-02 09:12:07

既然你确认了会有4组数据

4弧具有不同的内外半径。

代码语言:javascript
复制
var biggestarc = d3.svg.arc()
    .outerRadius(radius - 80)
    .innerRadius(radius - 10);

var bigarc = d3.svg.arc()
    .outerRadius(radius - 30)
    .innerRadius(radius - 60);

var smallarc = d3.svg.arc()
    .outerRadius(radius - 40)
    .innerRadius(radius - 50);

var biggerarc = d3.svg.arc()
    .outerRadius(radius - 20)
    .innerRadius(radius - 70);

数据将采用这种格式。

代码语言:javascript
复制
data = [{
    "label": "Biggest",
        "percent": 25 //percent to be shown for Biggest arc
}, {
    "label": "Bigger",
    "percent": 10 //percent to be shown for Bigger arc
}, {
    "label": "Big",
    "percent": 65 //percent to be shown for Big arc
}, {
    "label": "Small",
    "percent": 30 //percent to be shown for Small arc
}]

按照标签选择路径弧:

代码语言:javascript
复制
g.append("path")
    .attr("d", function (d) {
    console.log(d)
    if (d.data.label == "Biggest") {
        return biggestarc(d);

    } else if (d.data.label == "Bigger") {
        return biggerarc(d);

    } else if (d.data.label == "Big") {
        return bigarc(d);

    } else {
        console.log("target")
        return smallarc(d);
    }
})

工作代码这里

希望这能有所帮助!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34038216

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档