我正在尝试使用http://christophergandrud.github.io/networkD3/#sankeynetworkD3
中描述的包在 R 中创建交互式桑基图。我的数据是离散状态序列(DSS)的格式。1 行代表 1 个事件序列。NAs 表示序列已经结束。在 R 中重新创建数据样本:
x1 <- c('06002100', '06002001', '06001304', '06002100')
x2 <- c('06002100', '06002001', 'NA', 'NA')
x3 <- c('06001304', '06002100', '06002001', 'NA')
test <- as.data.frame(rbind(x1,x2,x3))
networkd3 包需要 json 格式的数据,如下所示:
URL <- paste0("https://cdn.rawgit.com/christophergandrud/networkD3/","master/JSONdata/energy.json")
以所需格式转换上面的示例数据会给我(test.json
):
{"nodes":[
{"name":"06002100"},
{"name":"06002001"},
{"name":"06001304"}
],
"links":[
{"source":0,"target":1,"value":3},
{"source":1,"target":2,"value":1},
{"source":2,"target":0,"value":2}
]}
一旦数据采用上述格式,我可以使用以下代码绘制 sankey 网络。
library(networkD3)
library(jsonlite)
Energy <- fromJSON(txt = 'test.json') # Load the data
result <- as.data.frame(Energy)
sankeyNetwork(Links = Energy$links, Nodes = Energy$nodes, Source = "source", Target = "target", Value = "value", NodeID = "name", fontSize = 12, nodeWidth = 30)
我想将我拥有的 DSS 数据转换为 networkD3 所需的格式。有没有直接的方法可以做到这一点?
networkD3 示例页面提到我可以使用igraph
包来创建可以用 networkD3 绘制的网络图数据。不幸的是,我找不到很好的例子。