我有一個D3 Js Sankey圖,有很多數據。數據的末尾總是公司。公司節點是一個簡單的圓圈。但是,在圓周圍我想要一個甜甜圈圖,有2個值。這些值在公司節點中是numsms和nummid。你也可以在下面的圖片中看到。該圖的D3甜甜圈圖JS JS Sankey圖
實施例:
,所以我想約於公司圓甜甜圈炭。但我似乎無法得到這項工作,我只找到甜甜圈字符的例子作爲自己的svg。
我的圈子
svg.selectAll(".node.circle")
.append("circle")
.attr("r", function(d) {
if(d.node.indexOf("company-") > -1) {
return company_circle_size(d);
} else {
return page_circle_size(d);
}
})
.attr("cy", function(d) { return d.dy/2;})
.attr("cx", function(d) {
var cx = sankey.nodeWidth() - 30;
if(d.node.indexOf("company-") > -1) {
cx = cx + 15;
}
return cx;
})
.style("fill", function (d) {
if(d.node.indexOf("company-") > -1) {
if(d.name.indexOf("No data") > -1) {
return "grey";
}
var color = '';
switch(d.status) {
case 'Approved':
color = 'green';
break;
case 'inactive ':
color = 'red';
break;
case 'initial':
color = 'yellow';
break;
case 'review':
color = 'blue';
break;
default:
color = 'grey';
break;
}
return color;
}
return "grey";
//return d.color = color(d.name.replace(/ .*/, ""));
})
.style("fill-opacity", ".9")
.style("shape-rendering", "auto")
.style("stroke", function (d) {
return d3.rgb(d.color).darker(2);
})
.append("title")
.text(function (d) {
if(d.node.indexOf("company-") > -1) {
if(d.cpId != null) {
return d.name + "\n cpId: " + d.cpId;
}
return d.name;
}
return d.name + "\n" + format(d.value);
});
在爲LU的代碼我代替類名「節點圈」到「節點企業」。
$(selector).attr("class", "node company")
我試過一些東西,我認爲代碼需要放在這裏。
svg.selectAll('.company').each(function(companyNode) {
var values = [[companyNode.numsms, companyNode.nummid]];
var total = companyNode.numsms + companyNode.nummid;
if(total > 0) {
// create donut chart
}
});
請的一個例子更新你的問題你數據。難以回答這個問題,無法重新創建一個完整的示例.... – Mark
代碼太大,嵌套項目到服務器。所以我不能做一個jsfidle而不改變我的代碼太多。此外,這個問題還有很多不必要的代碼。 如果你的意思是在JSON字符串中的數據,那麼我有這個: http://jsfiddle.net/Mithek/f5e6L2su/ 我把它放在jsfiddle中,因爲它是一個很長的字符串。 –