我有一个前往D3的json:
{"time": "foo1", "values1": "bar1", "values2": "val1"}
{"time": "foo2", "values1": "bar2", "values2": "NULL"}
{"time": "foo3", "values1": "bar3", "values2": "val2"}
{"time": "foo4", "values1": "bar4", "values2": "NULL"}
它针对
values1
生成time
的折线图,并在其上生成圆点,这是通过以下方式生成的:var circles = svg.selectAll("circle")
.data(data);
circles.exit().remove();
circles.enter().append("circle")
.attr("r", 2)
.merge(circles)
.attr("cx", function(d) { return x(d.time); })
.attr("cy", function(d) { return y(d.values1); });
然后有一些CSS来定义圆圈的颜色。这一切都很好。
如果来自同一时间戳的
values2
不为NULL,是否可以用不同的颜色渲染圆?例如,从数据的第一行开始,一个点将位于
(foo1,bar1)
处,并且为黑色,因为values2
不为null,而在下面的行中,该点将在(foo2,bar2)
处呈现,并为红色,因为values2
为空。也许两套不同的圈子是合适的,这似乎是最明显的解决方案,但是我仍然不确定如何实现该条件。
最佳答案
加:.style("fill", function(d){ return d.values2 === "NULL" ? "red" : "black"})
。将积分归功于@GerardoFurtado