2012-11-10 83 views
0

我正试图建立一个甜甜圈图表。我如何添加特定于弧线的不同颜色。比如我要红色的地位“一”,蓝色状态“两节”,绿色状态“三化”等等......如何在d3中将自定义颜色添加到圆环图中的特定圆弧?

我尝试以下,

var color = d3.scale.ordinal() 
.domain(["one","two","three","four","five"]) 
.range(["#013ADF", "#ACFA58", "#DF3A01", "#6b486b", "#a05d56"]); 


paths.enter().append("svg:path") 
     .attr("stroke", "white") 
     .attr("stroke-width", 0.5) 
     .attr("fill", function(d, i) {console.log(color(d.name)); return color(d.name); }) 

我能最初得到颜色。但是,当任何状态计数减少到0时,颜色会被混洗。而当我再次增加了状态数,我是不是能够得到特定颜色回来...

请帮助一些建议....

+0

控制台日志说什么?如果您手动调用“颜色”功能,该功能是否正常工作? –

+0

@控制台中的Lars Kotthoff颜色(d.name)最初会返回正确的颜色代码..但是,如果我的状态计数值中的任何一个值减少到零并再次增加,问题就会出现,并且我的颜色会被混洗......任何解决方案??? – selvagsz

+0

“彩色洗牌”是什么意思?你是否动态修改“颜色”?你如何获得状态计数? –

回答

1

你最好每次更新的颜色不仅在enter()中。

paths.enter().append("svg:path") 
    .attr("stroke", "white") 
    .attr("stroke-width", 0.5) 

path.attr("fill", function(d, i) {console.log(color(d.name)); return color(d.name); }) 
相关问题