Ниже приведены два примера аналогичного кода 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'?