D3.js 使用D3子弹图中JSON数据的颜色

D3.js 使用D3子弹图中JSON数据的颜色,d3.js,D3.js,我是d3js新手,这里缺少一些基本的东西 在我的JSON数据中,我添加了一个颜色元素barColor(到第二组值中): JSON barColor数据被正确读取,因为我可以在各种上下文中使用它,而不是在我想要的地方 以下是我得到的(连同其他成功的测试一起被注释掉): 具体来说,它是d3.selectAll(.bullet.measure.s0)样式(“fill”,函数(d){return d.barColor;})这不是我期望的工作方式。也就是说,我希望d.barColor将measure.s0

我是d3js新手,这里缺少一些基本的东西

在我的JSON数据中,我添加了一个颜色元素barColor(到第二组值中):

JSON barColor数据被正确读取,因为我可以在各种上下文中使用它,而不是在我想要的地方

以下是我得到的(连同其他成功的测试一起被注释掉):

具体来说,它是d3.selectAll(.bullet.measure.s0)样式(“fill”,函数(d){return d.barColor;})这不是我期望的工作方式。也就是说,我希望d.barColor将measure.s0的填充更改为红色

我花了相当多的时间阅读和搜索,但似乎被卡住了


提前感谢您的指导。

在这种情况下,您不想使用
.style
。使用
.attr
,因为在JSON数据中已经定义了
barColor

要修复此问题,请尝试更改此选项:

.style(“fill”,函数(d){return d.barColor;})

为此:

.attr(“style”,函数(d){return d.barColor;})


我自己对d3还是有点陌生,所以你可能需要调整一下,但希望它能让你走上正轨。

@user2679918这对你有用吗?如果没有,请告诉我,我们可以解决更多问题。
[ {"title":"AMER Revenue","subtitle":"703 US$, in thousands","ranges":[840,945,1200],"measures":[703],"markers":[1050]}, {"title":"AMER COGS","subtitle":"587 US$, in thousands","ranges":[1200,832.5,740],"measures":[587],"markers":[925],"barColor":["red"]} ]
/* Select the bars and use the color from the json data */
  d3.selectAll(".bullet .measure.s0")
      //.style("fill", "red"); //This works. All .measure.s0 bars set to red.
      .style("fill", function(d) { return d.barColor; }); //Why doesn't this work?