Проблема, с которой вы столкнулись, должна быть связана с данными, которые вы используете, но я не могу точно сказать, что именно, потому что вы не поделились ими.Если я использую правильно структурированные данные и использую их в качестве входных данных, ваша первая, точная команда 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)
При проверке файла справки параметр NodeGroup
описывается как «символьная строка, указывающая группы узлов в узлах.Используется для окраски узлов в сети. "Если вы указываете NodeGroup
как c(0,1,2,3,4,5,6,7)
, это не строка символов.Вероятно, поэтому все узлы черные с помощью вашей второй команды sankeyNetwork()
.Например, см. этот вопрос о группах раскраски с sankeyNetwork
.
Кроме того, в верхней части файла справки в разделе «Использование» вы можете видеть, что значение по умолчанию дляNodeGroup
- это то, что передается в NodeID
.Таким образом, если вы ничего не назначите NodeGroup
, как в первом примере, тогда NodeID
будет использоваться в качестве группы ... эффективно создавая уникальную группу для каждого узла, которой будет назначен цвет в соответствии сcolourScale
параметр.
Одна вещь, которая не явно указана в файле справки, заключается в том, что, по-видимому, используется только первое слово имени группы, поэтому на изображении выше, например, «Импорт нефти»"," Запасы нефти "и" Нефть "все узлы считаются частью одной группы и поэтому имеют одинаковый цвет.