D3 Circle Pack: настройка цветов круга

Я пытаюсь использовать http://mbostock.github.com/d3/ex/bubble.html но с измененными цветами.

Я хотел бы узнать, как цвета установлены в d3.layout.pack.

2 ответа

В приведенном выше примере цвет круга определяется здесь:

.style("fill", function(d) { return fill(d.packageName); });

Вот, d это данные, привязанные к кругу.
Вместо цвета в этом примере функция передает объект (атрибут packageName d).
Каждый объект получает свой уникальный цвет, назначенный ему, в соответствии с выбранной цветовой шкалой:

fill = d3.scale.category20c();

Если вы удовлетворены использованными критериями для окраски (packageName) и все, что вам нужно, это изменить цвета, вы можете изменить палитру (цветовую гамму):
https://github.com/mbostock/d3/wiki/Ordinal-Scales

если вы хотите изменить критерии окраски, то вам нужно изменить возвращаемую деталь, заменив ее значением цвета в зависимости от данных d,

Здесь вы можете найти конструкторы цвета D3:
https://github.com/mbostock/d3/wiki/Colors

Вы можете изменить файл json для ваших данных и настроить код d3, чтобы указать, какой цвет будет заполнять каждый отдельный пузырь.

Ниже приведены мои данные, и вы можете видеть, что я указываю, каким цветом заполнить пузырьки.

{
  "name": "sentiment",
  "children": [
    {
      "name": "positive",
      "children": [
        {
          "name": "iphone", "size": 2000, "color": "green"
        }
      ]
    }
  ]
}

Затем я добавляю атрибут цвета, который я указал, в объект узла, чтобы к нему позже можно было получить доступ в функции d3.

function recurse(name, node) {
  if (node.children) node.children.forEach(function(child) {
    recurse(node.name, child);
  });
  else classes.push({
    packageName: name,
    className: node.name,
    value: node.size,
    color: node.color
  });
}

Затем найдите функцию, отвечающую за окрашивание пузырьков, и отредактируйте функцию заливки.

node.append("circle")
      .attr("r", function(d) { return d.r; })
      .style("fill", function(d) { return d.color; });

Мой код редактируется из кода, указанного на http://bl.ocks.org/mbostock/4063269

Другие вопросы по тегам