Svg 如何将自定义颜色添加到d3中甜甜圈图表中的特定圆弧?
我正在尝试建立一个油炸圈饼图表。如何添加特定于圆弧的不同颜色。例如,我想要红色表示状态“一”,蓝色表示状态“二”,绿色表示状态“三”,等等 我试了以下方法Svg 如何将自定义颜色添加到d3中甜甜圈图表中的特定圆弧?,svg,d3.js,crossfilter,Svg,D3.js,Crossfilter,我正在尝试建立一个油炸圈饼图表。如何添加特定于圆弧的不同颜色。例如,我想要红色表示状态“一”,蓝色表示状态“二”,绿色表示状态“三”,等等 我试了以下方法 var color = d3.scale.ordinal() .domain(["one","two","three","four","five"]) .range(["#013ADF", "#ACFA58", "#DF3A01", "#6b486b", "#a05d56"]); paths.enter().append("svg:p
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时,颜色会被洗牌。当我再次增加状态计数时,我无法恢复特定的颜色
请提供一些建议帮助……您最好每次都更新颜色,而不仅仅是在enter()中
您最好每次都更新颜色,而不仅仅是在enter()中
控制台日志是怎么说的?如果手动调用,
color
函数是否有效?@Lars Kotthoff color(d.name)在控制台中最初返回正确的颜色代码。。但当我的状态计数值减为零并再次增加时,问题就出现了,我的颜色被洗牌。。。有什么解决办法吗?你说的“颜色被洗牌”是什么意思?您是否正在动态修改颜色
?如何获得状态计数?最初我假设红色为状态“一”,但当状态计数减少到零时,红色被分配到其他状态。我不会在初始化后改变我的颜色。状态计数是多少,它与颜色有什么关系?我在你的代码中看不到。控制台日志怎么说?如果手动调用,color
函数是否有效?@Lars Kotthoff color(d.name)在控制台中最初返回正确的颜色代码。。但当我的状态计数值减为零并再次增加时,问题就出现了,我的颜色被洗牌。。。有什么解决办法吗?你说的“颜色被洗牌”是什么意思?您是否正在动态修改颜色
?如何获得状态计数?最初我假设红色为状态“一”,但当状态计数减少到零时,红色被分配到其他状态。我不会在初始化后改变我的颜色。状态计数是多少,它与颜色有什么关系?我在你的代码里看不到。
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); })