下面是两个类似 D3 代码的示例,一个有效,另一个无效。在此示例中,我想更改轴的线条颜色 -
这不起作用,轴的描边颜色线不会更改为绿色 -
var x_axis = svg.append("g")
.attr("class", "axis")
.attr("transform", `translate(20, ${height - 50})`)
.call(d3.axisBottom(ordinalScale))
.selectAll("text")
.attr("transform", "translate(-5,5)rotate(-45)")
.style("text-anchor", "end")
.style("font-size", "8px")
.style("fill", "#102040");
x_axis.selectAll("line, path").style("stroke", "green");
但这有效,线条变为绿色:
var x_axis = svg.append("g")
.attr("class", "axis")
.attr("transform", `translate(20, ${height - 50})`)
.call(d3.axisBottom(ordinalScale));
x_axis.selectAll("text")
.attr("transform", "translate(-5,5)rotate(-45)")
.style("text-anchor", "end")
.style("font-size", "8px")
.style("fill", "#102040");
x_axis.selectAll("line, path").style("stroke", "green");
不同之处在于,在第一个(失败的)示例中,我将 'selectAll("text")' 操作链接到 'call(d3.axisBottom)' 和以下 'selectAll("line, path")' 操作表达式,在第二个(成功的)示例中,我对每个文本和行/路径操作都有以下单独的表达式。
这并不重要,因为我可以获得我想要的效果,但在我看来它们应该是等效的,但显然我不理解语法的一些微妙之处。这与“.call”操作有关吗?
海绵宝宝撒
相关分类