2015-12-02 100 views
2

Donut定製D3.js圓環圖

我想創建一個像甜甜圈上面使用d3.js,但我無法作出一個。我可以使用d3.js製作一個普通的甜甜圈。

請任何人有任何想法如何使用d3.js這個甜甜圈?

+1

誰告訴你製作該圖表不是正常的甜甜圈圖表 – ozil

+0

我有要求製作一個這樣的圖表,而不是一個正常的圖表。 – nikunj2512

+0

在這裏有4個分區,或者可以有更多? – Cyril

回答

1

由於您確認將會有4組數據

因此有4條弧具有不同的內徑和外徑。

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); 

數據將採用此格式。

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 
}] 

選擇路徑弧按標籤:

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); 
    } 
}) 

工作代碼here

希望這有助於!

+1

非常感謝你。 – nikunj2512

+0

這個labelarc有什麼用? – nikunj2512

+0

不需要刪除它我試圖在它周圍放置文本標籤。 – Cyril