我有一个前往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

10-06 14:45