d3 .attr ('fill', "rgba (0,0,0,0.18") работает; вызов функции не работает - PullRequest
0 голосов
/ 04 августа 2020

У меня есть код D3, который отлично работает. Он включает такой вызов, чтобы заполнить область серым цветом:

...
.attr("fill", "rgba(0,0,0,.18)")
...

Однако, если я изменю эту строку на следующую (где fillSmoke () возвращает ту же строку "rgba(0,0,0,.18)"), диаграмма будет заполнена с черным, а не желаемым серым.

.attr("fill", function(d, i) {fillSmoke(d,i)})

... and later ...

fillSmoke = (d, i) => {
    return "rgba(0,0,0,0.18)"
  }

У меня такое ощущение, что D3 должен разбирать "rgba(0,0,0,.18)" в первом случае, но не во втором. Что я могу сделать, чтобы вернуть желаемое значение серого из fillSmoke ()? Спасибо.

Решение: Измените тело функции, чтобы включить return (например, {return fillSmoke(d,i)} Спасибо!

Ответы [ 2 ]

2 голосов
/ 04 августа 2020

Второй параметр метода .attr может быть функцией, но он должен возвращать значение цвета, которое вы хотите использовать. Сейчас ваша функция просто вызывает fillSmoke, но не возвращает значения. Исправьте это, изменив строку на:

.attr("fill", function(d, i) { return fillSmoke(d,i); })

Оператор return необходим для возврата значения - это работает, пока fillSmoke возвращает желаемое значение цвета. В качестве альтернативы, это тоже может сработать:

.attr("fill", fillSmoke)

См. подробнее

0 голосов
/ 04 августа 2020

Это была глупая ошибка - функция должна была быть определена для возврата результатов fillSmoke (), например:

function(d, i) {return fillSmoke(d,i)}

Спасибо, все .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...