R: networkD3 sankey plot - цвета не отображаются - PullRequest
0 голосов
/ 10 декабря 2018

Я использую пакет в для создания графиков sankey.Я использовал следующий код для создания рабочего графика:

sankeyNetwork(Links = df_links, Nodes = df_nodes, Source = "source", 
              Target = "target", Value = "value", NodeID = "name", 
              units = "Cases", fontSize = 12, nodeWidth = 20)

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

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

sankeyNetwork(Links = df_links, Nodes = df_nodes, Source = "source", 
              Target = "target", Value = "value", NodeID = "name", 
              NodeGroup = "ID", units = "Cases", fontSize = 12, 
              nodeWidth = 20)

Если кто-нибудь может позволить мнезнаю, где я иду не так, что было бы очень ценно.Я подозреваю, что неправильно понимаю использование переменной NodeGroup - в настоящее время я назначаю каждую из семи NodeID уникальных групп c(0,1,2,3,4,5,6,7) с первоначальной целью, чтобы каждый узел по-разному окрашивался.Это правильная интерпретация переменной?

1 Ответ

0 голосов
/ 10 декабря 2018

Проблема, с которой вы столкнулись, должна быть связана с данными, которые вы используете, но я не могу точно сказать, что именно, потому что вы не поделились ими.Если я использую правильно структурированные данные и использую их в качестве входных данных, ваша первая, точная команда sankeyNetwork() работает как положено (с цветами) ...

(обсуждение параметров NodeGroup см. Ниже)

library(networkD3)

URL <- paste0('https://cdn.rawgit.com/christophergandrud/networkD3/',
              'master/JSONdata/energy.json')
energy <- jsonlite::fromJSON(URL)

df_links <- energy$links
df_nodes <- energy$nodes

sankeyNetwork(Links = df_links, Nodes = df_nodes, Source = "source", 
              Target = "target", Value = "value", NodeID = "name", 
              units = "Cases", fontSize = 12, nodeWidth = 20)

enter image description here

При проверке файла справки параметр NodeGroup описывается как «символьная строка, указывающая группы узлов в узлах.Используется для окраски узлов в сети. "Если вы указываете NodeGroup как c(0,1,2,3,4,5,6,7), это не строка символов.Вероятно, поэтому все узлы черные с помощью вашей второй команды sankeyNetwork().Например, см. этот вопрос о группах раскраски с sankeyNetwork.

Кроме того, в верхней части файла справки в разделе «Использование» вы можете видеть, что значение по умолчанию дляNodeGroup - это то, что передается в NodeID.Таким образом, если вы ничего не назначите NodeGroup, как в первом примере, тогда NodeID будет использоваться в качестве группы ... эффективно создавая уникальную группу для каждого узла, которой будет назначен цвет в соответствии сcolourScale параметр.

Одна вещь, которая не явно указана в файле справки, заключается в том, что, по-видимому, используется только первое слово имени группы, поэтому на изображении выше, например, «Импорт нефти»"," Запасы нефти "и" Нефть "все узлы считаются частью одной группы и поэтому имеют одинаковый цвет.

...