Я пытаюсь создать sankey diagram в R, который также упоминается как участок реки. Я видел этот вопрос Sankey Diagrams in R?, где перечислены широкие вариации пакетов, производящих диаграммы sankey. Поскольку у меня есть входные данные и я знаю разные инструменты/пакеты, я могу создать такую диаграмму. Но мой euqestion: как я могу подготовить входные данные для таких?Как подготовить входные данные для диаграмм sankey в R?
Давайте предположим, что мы хотели бы представить, как пользователи мигрировали между различными государствами в течение 10 дней и имеют начать набор данных, как показано ниже:
data.frame(userID = 1:100,
day1_state = sample(letters[1:8], replace = TRUE, size = 100),
day2_state = sample(letters[1:8], replace = TRUE, size = 100),
day3_state = sample(letters[1:8], replace = TRUE, size = 100),
day4_state = sample(letters[1:8], replace = TRUE, size = 100),
day5_state = sample(letters[1:8], replace = TRUE, size = 100),
day6_state = sample(letters[1:8], replace = TRUE, size = 100),
day7_state = sample(letters[1:8], replace = TRUE, size = 100),
day8_state = sample(letters[1:8], replace = TRUE, size = 100),
day9_state = sample(letters[1:8], replace = TRUE, size = 100),
day10_state = sample(letters[1:8], replace = TRUE, size = 100)
) -> dt
Теперь, если один хотел бы создать Санки диаграмму с networkD3
package как следует один tranform этого dt
data.frame в необходимый вход
так, что мы имели бы вход как из этого примера
library(networkD3)
URL <- paste0(
"https://cdn.rawgit.com/christophergandrud/networkD3/",
"master/JSONdata/energy.json")
Energy <- jsonlite::fromJSON(URL)
# Plot
sankeyNetwork(Links = Energy$links, Nodes = Energy$nodes, Source = "source",
Target = "target", Value = "value", NodeID = "name",
units = "TWh", fontSize = 12, nodeWidth = 30)
EDIT
Я нашел такой скрипт, который подготавливает данные в другой ситуации и воспроизведенный, так что я предполагаю, что это может быть в настоящее время закрыты:
https://github.com/mi2-warsaw/JakOniGlosowali/blob/master/sankey/sankey.R
Вместо того, чтобы закрывать его, вы также можете рассмотреть вопрос о предоставлении ответа на свой вопрос. Это может помочь другим людям – PavoDive
Хорошо, я загрузил код с примером и отвечу :) –