Облако слов d3 указывает цвет отдельного слова

Я использую библиотеку JD word cloud d3. Я понимаю, как изменить цвета облака. Для этого я использую следующий код:

  ProductDetailView.prototype._drawCloud = function() {
    function draw(words) {
      var colors = [
        '#3498DB', '#1478BB', '#00589B', '#54A8FB', '#74C8FF'
      ];

Однако я хочу иметь возможность указать цвет для определенных слов. Мне не ясно, как это сделать, но я нашел пример в сети, предполагающий, что это возможно:

http://community.qlik.com/message/265261#265261

Кто-нибудь может объяснить, как указать цвет определенных слов в облаке? Например, я хочу, чтобы все республиканцы в моем облаке были окрашены в красный цвет. Я знаю, какие слова являются республиканцами. Как указать их цвет?


person melchoir55    schedule 17.11.2014    source источник


Ответы (2)


Я сделал это следующим образом:

1) На карте loadWords() любой цвет, который я хочу назначить конкретному объекту

function loadWords(){
    var word1 = {
            text: 'word',
            size: 32,
            color:'#FF00FF'
            };
    var word2 = {
            text: 'word2',
            size: 45,
            color:'#3498DB'
            };
    return [word,word2]
    }

  d3.layout.cloud().size([300, 300])
      .words(loadWords())
      ...
      .start();

2) Определите функцию отображения

  function fillColor(d,i){
      return d.color;
  }

3) И к function draw(words) {... добавить это

        .style("fill", fillColor)
person Babu    schedule 12.05.2015

Самый простой способ сделать это - изменить следующую строку

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

to

      .style("fill", function(d, i) { if (check_for_republican) return republican_color ; else return democrat_color })
person Vivek Kumar    schedule 27.12.2014