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

时间:2014-12-31 19:35:42

标签: d3.js

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

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

[ {"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"]} ]

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

这是我所得到的(完成了其他成功的测试):

/* 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?

具体来说,它是 d3.selectAll(" .bullet .measure.s0")。style(" fill",function(d){return d.barColor;}); 并不像我期望的那样工作。也就是说,我希望d.barColor将measure.s0的填充更改为红色。

我花了很多时间阅读和搜索,但似乎被卡住了。

提前感谢任何指导。

1 个答案:

答案 0 :(得分:0)

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

要解决此问题,请尝试更改此内容:

.style("fill", function(d) { return d.barColor; });

对此:

.attr("style", function(d) { return d.barColor; });

我自己对d3还有点新鲜,所以你可能不得不调整一些,但希望它会让你走上正轨。