2016-06-02 5 views
3

Поднимая на этом question, я пытаюсь назначить набор цветов узлам и, надеюсь, ссылки на режим градиента, на диаграмме Санки с использованием пакета GoogleVis в R. Проблема в том, что у меня есть одни и те же категории в каждом из трех наборов узлов, и у меня возникают проблемы с ее взаимодействием.Назначение цветов узла и ссылки в R диаграмме goankVis sankey

datSK <- data.frame(From=c(rep("A1",3), rep("B1", 3), rep("C1", 3), rep("A2", 3), rep("B2", 3), rep("C2",3)), 
       To=c(rep(c("A2", "B2", "C2"), 3), rep(c("A3", "B3", "C3"), 3)), 
       Weight=c(5,7,6,2,9,4,3,4,5)) 

Я хочу узлов А, В, С, которые появляются в 3-х различных частях диаграммы, чтобы иметь те же цвета (соответственно синий, оранжевый, зеленый).

plot(gvisSankey(datSK, from="From", 
     to="To", weight="Weight", 
     options=list(sankey="{ 
        link: { colorMode: 'gradient', colors: ['blue', 'orange', 'green']}, 
        node: { colors: ['blue', 'orange', 'green']}}"))) 

К сожалению, я не могу понять, как назначаются цвета.

+0

Я хочу знать ответ на это тоже! – svenhalvorson

ответ

3

Это был год, я не знаю, вы все еще нужен ответ или нет, но это то, что я нашел:

plot(gvisSankey(datSK, from="From", 
     to="To", weight="Weight", 
     options=list(sankey="{ 
        link: { colorMode: 'gradient'}, 
        node: { colors: ['blue', 'blue', 'orange', 
            'green','orange', 'green', 
            'blue','orange','green']} 
          }"))) 

Санки Диаграмма Google будет присваивать цвета на основе внешнего вида порядка из узлы. Вот как я определяю порядок появления узла. В основном я создаю строку списка узлов соединений, разделяю их и извлекаю уникальные узлы, а затем назначаю цвета.

# Create a stringlist of node pairs 
nodestringlist <- paste(datSK$From,datSK$To, collapse=' ') 

# Split them up 
nodestringvector <- strsplit(nodestringlist, split =' ') 

# Find the unique nodes in order they appear 
node_order <- unique(nodestringvector[[1]]) 
#output: "A1" "A2" "B2" "C2" "B1" "C1" "A3" "B3" "C3" 

Это то, что вы хотите?

+1

Теперь я не могу вспомнить. :), но похоже, что @svenhalvorson нуждался в ответе, так что, надеюсь, это ему поможет. Кроме того, я думаю, что есть версия ggplot диаграммы sankey, которая в конечном итоге будет доступна через 'ggforce'. – Phil

+0

Спасибо, что пометили мой ответ. Это sankey ggplot звучит как отличная идея. Я тоже посмотрю на это. – addicted