带有networkD3包的Sankey图将不会打印
我正在使用R中的带有networkD3包的Sankey图将不会打印,r,sankey-diagram,htmlwidgets,networkd3,R,Sankey Diagram,Htmlwidgets,Networkd3,我正在使用R中的networkD3包中的sankeyNetwork函数,以找到的代码为例。然而,我得到的只是一个空白屏幕。该图表应该显示年龄组之间的感染流(按性别)。我的代码如下: library(RCurl) library(networkD3) edges <- read.csv(curl("https://raw.githubusercontent.com/kilimba/data/master/infection_flows.csv"),stringsAsFactors = FA
networkD3
包中的sankeyNetwork
函数,以找到的代码为例。然而,我得到的只是一个空白屏幕。该图表应该显示年龄组之间的感染流(按性别)。我的代码如下:
library(RCurl)
library(networkD3)
edges <- read.csv(curl("https://raw.githubusercontent.com/kilimba/data/master/infection_flows.csv"),stringsAsFactors = FALSE )
nodes = data.frame(ID = unique(c(edges$Source, edges$Target)))
nodes$indx =0
for (i in 1:nrow(nodes)){
nodes[i,]["indx"] = i - 1
}
edges2 <- merge(edges,nodes,by.x = "Source",by.y = "ID")
edges2$Source <-NULL
names(edges2) <- c("target","value","source")
edges2 <- merge(edges2,nodes,by.x = "target",by.y = "ID")
edges2$target <- NULL
names(edges2) <- c("value","source","target")
nodes$indx <- NULL
# Plot
sankeyNetwork(Links = edges2, Nodes = nodes,
Source = "source", Target = "target",
Value = "value", NodeID = "ID",
width = 700, fontsize = 12, nodeWidth = 30)
库(RCurl)
图书馆(网络3)
edges您确定R控制台中没有打印错误吗
这对我来说只需要两个小修改:
在开始时也加载curl包
library("curl")
fontsize
参数显然不起作用,应该删除
# Plot
sankeyNetwork(Links = edges2, Nodes = nodes,
Source = "source", Target = "target",
Value = "value", NodeID = "ID",
width = 700, #fontsize = 12,
nodeWidth = 30)
调整fontsize确实有效,但您的参数缺少大写字母:fontsize
sankeyNetwork(Links = edges2, Nodes = nodes,
Source = "source", Target = "target",
Value = "value", NodeID = "ID",
width = 700, fontSize = 12,
nodeWidth = 30)
我通过确保源、目标和值都是数字来解决这个问题
例如:
能源$链接$价值
您不需要RCurl
,read.csv
可以直接从URL读取
在创建nodes data.frame时,使用stringsAsFactors=FALSE
选项可能更安全
正如其他人所指出的,您必须确保链接数据中的源变量和目标变量是数字的,并且它们是零索引的
正如其他人所指出的,font-size参数正确命名为fontSize
我提供了一种更直接的方法来创建带有nodes data.frame中节点的数字索引的链接数据
库(networkD3)
我也面临同样的问题。sankeyNetwork使用的是我使用的数据集的较小样本,但如果尝试使用完整的数据集,它会显示一个空白屏幕。询问者发布了一个代码,答案应该显示在该代码中,请检查其他回答者
library(networkD3)
edges <- read.csv("https://raw.githubusercontent.com/kilimba/data/master/infection_flows.csv",stringsAsFactors = FALSE)
nodes = data.frame(ID = unique(c(edges$Source, edges$Target)), stringsAsFactors = FALSE)
edges$Source <- match(edges$Source, nodes$ID) - 1
edges$Target <- match(edges$Target, nodes$ID) - 1
sankeyNetwork(Links = edges, Nodes = nodes,
Source = "Source", Target = "Target",
Value = "Value", NodeID = "ID",
width = 700, fontSize = 12, nodeWidth = 30)