【发布时间】:2016-02-03 15:02:15
【问题描述】:
我正在尝试在 R 中生成 sankey diagram,这也称为河图。我已经看到了这个问题Sankey Diagrams in R?,其中列出了各种各样的生成 sankey 图的包。因为我有输入数据并且知道不同的工具/包,所以我可以制作这样的图表,但我的问题是:我怎样才能为此准备输入数据?
假设我们想展示用户在 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 创建一个桑基图,应该如何将这个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)
编辑
我发现这样的脚本可以在其他情况下准备数据并复制它,所以我认为它现在可能会关闭:
https://github.com/mi2-warsaw/JakOniGlosowali/blob/master/sankey/sankey.R
【问题讨论】:
-
您也可以考虑为您的问题提供答案,而不是关闭它。这可能对其他人有帮助
-
好的,我已经上传了一个带有示例和答案的代码:)
标签: r data-visualization sankey-diagram networkd3