Я использую библиотеку networkD3 для R, чтобы создать сети Sankey. Хотя для меня это работает очень хорошо, я столкнулся с проблемой присвоения атрибутов «NoteID» и/или «NoteGroup» для группировки и выделения цветов, как показано в https://christophergandrud.github.io/networkD3/#sankeySankey Diagram with R library networkD3 не отображает цвета
В следующем примере показаны четыре примера создания Sankey схема, только «Sankey4» работает как задумано, то есть без каких-либо цветов:
library(networkD3)
#Unique list of nodes
my_nodes = structure(list(name = c("HawaiTEST", "AMSVOASMPP01", "App1",
"Transfer", "Transferred_tel__63null_",
"Transferred_tel__631100107_",
"AMSVOASMPP02",
"Transferred_tel__631100108_",
"Transferred_tel__631100106_",
"Transferred_tel__631100104_",
"Transferred_tel__631100105_",
"FarEndDisconnect",
"FarEndDisconnect_Hangup", "DutchAOS",
"SwedenAOS",
"Transferred_tel__63000_")), class =
c("tbl_df", "tbl", "data.frame"
), row.names = c(NA, -16L), .Names = "name")
# Network
my_links = structure(list(key = c("0_1", "0_6", "1_13", "1_14", "1_2", "11_12",
"13_11", "13_3", "14_11", "14_3", "2_11",
"2_3", "3_10", "3_15",
"3_4", "3_5", "3_7", "3_8", "3_9", "6_13",
"6_2"), source = c(0L,
0L, 1L, 1L, 1L, 11L, 13L, 13L, 14L, 14L, 2L,
2L, 3L, 3L, 3L,
3L, 3L, 3L, 3L, 6L, 6L), target = c(1L, 6L,
13L, 14L, 2L, 12L,
11L, 3L, 11L, 3L, 11L, 3L, 10L, 15L, 4L, 5L,
7L, 8L, 9L, 13L,
2L), total = c(38L, 36L, 4L, 3L, 31L, 6L, 2L,
5L, 1L, 2L, 3L,
61L, 11L, 1L, 12L, 11L, 11L, 11L, 11L, 3L,
33L)), class = c("tbl_df",
"tbl", "data.frame"), row.names = c(NA, -21L), .Names
= c("key",
"source", "target", "total"))
# NOT WORKING using "NodeID", or "NodeGroup"
sankey1 = sankeyNetwork(Links =my_links, Nodes = my_nodes, Source =
"source", Target = "target", Value = "total", units =
"calls", NodeID = "name")
sankey2 = sankeyNetwork(Links =my_links, Nodes = my_nodes, Source =
"source", Target = "target", Value = "total", units =
"calls", NodeGroup = "name")
sankey2
# NOT WORKING using ColourScale (diagram is displayed, grey scale though)
ColourScale <- 'd3.scale.ordinal()
.domain(["lions", "tigers"])
.range(["#FF6900", "#694489"]);'
sankey3 = sankeyNetwork(Links =my_links, Nodes = my_nodes, Source =
"source", Target = "target", Value = "total", units =
"calls", colourScale = JS(ColourScale))
sankey3
# WORKING!
sankey4 = sankeyNetwork(Links =my_links, Nodes = my_nodes, Source =
"source", Target = "target", Value = "total", units =
"calls")
sankey4
«Sankey1» пытается с помощью «NoteID», как он используется в примере из Интернета, указанным выше, однако, делать это приводит диаграмма не отображается вообще; тот же эффект для «Sankey2». «Sankey4» отображается серым цветом независимо от определения цветовой схемы.
Я также просмотрел код html, созданный обоими, мой код R, производящий «Sankey1», а также код, используемый на https://christophergandrud.github.io/networkD3/#sankey. Очевидно, что существует разница в отношении группы:
HTML от "Sankey1":
"group":{"name":["HawaiTEST", ...
...
"options":{"NodeID":1,"NodeGroup":"name","LinkGroup":null,
HTML отрывок из веб-примера:
"group":["Agricultural 'waste'","Bio-conversion", ...
...
"options":{"NodeID":"name","NodeGroup":"name","LinkGroup":null
Изменение выходного HTML для "Sankey1" в чтобы отразить вывод из веб-примера, решает проблему, «Sankey1» отображается с использованием схемы цветов по умолчанию.
Я нахожусь в стене в данный момент, пытаясь понять поведение данных, которые я использую. Функция sankey не полагается на ввод обязательного списка; Я на самом деле alos разбил пример набора данных с веб-сайта на два кадра данных (узлы, ссылки), это создает одну и ту же диаграмму sankey с цветами, как в веб-примере. Следовательно, что-то должно быть неправильно с входными данными в моем примере ... Полагаю ... Любая помощь была бы высоко оценена! Благодаря Oli
Спасибо! Проблема на моем конце, очевидно, была связана с настройкой кэширования моего интернет-соединения. После создания диаграммы sankey, которую я назвал «Sankey4» в публикации, браузер не захватил ни одну из модифицированных версий («Sankey1/2/3»), bugger. Да, сейчас все работает. Благодаря вашему отчету о успехе я попробовал его на другом компьютере - что-то, что я должен был сделать раньше, в первую очередь. Еще раз большое спасибо за то, что посмотрели на эту проблему. – Oliver
Я нашел что-то интересное. Очевидно, что моя проблема была вызвана не только настройкой кэширования. – Oliver
Я нашел что-то интересное. Очевидно, что моя проблема была вызвана не только настройкой кэширования. Все работает так, как описано в вашем ответе. Однако, как только я загружу библиотеки «dplyr» и/или «tidyr» перед вызовом функции networkD3 для создания сети, диаграмма «sankey1» создает неверный HTML-код, как указано выше («« group »: {« name ": [" HawaiTEST ", ..."), что в итоге приводит к пустой диаграмме. – Oliver