我用R从iGraph中的一个图中创建自我网络,根据这个question得到的答案。然后,我想将每个自我网络导出为PDF或图像文件(最好是PDF)中的一个情节。
由于在完整的dataframe中有788个‘自我网络’,我想让PDF的文件名匹配网络的相关节点ID,即dataframe的'From‘列。否则很难找到我想要的特定网络。这是如何做到的呢?
这里是网络的一个例子
library(igraph)
> dput(droplevels(head(df)))
structure(list(From = structure(c(5L, 1L, 6L, 4L, 2L, 3L), .Label = c("ADVANCED DIPLOMA OF ACCOUNTING",
"ADVANCED DIPLOMA OF CONVEYANCING", "ADVANCED DIPLOMA OF LEADERSHIP AND MANAGEMENT",
"ADVANCED DIPLOMA OF NETWORK SECURITY", "ADVANCED DIPLOMA OF POLICING",
"ADVANCED DIPLOMA OF VISUAL ARTS"), class = "factor"), To = structure(c(5L,
1L, 6L, 3L, 2L, 4L), .Label = c("DIPLOMA OF ACCOUNTING", "DIPLOMA OF EVENT MANAGEMENT",
"DIPLOMA OF INFORMATION TECHNOLOGY NETWORKING", "DIPLOMA OF LEADERSHIP AND MANAGEMENT",
"DIPLOMA OF POLICING", "DIPLOMA OF VISUAL ARTS"), class = "factor")), row.names = c(NA,
6L), class = "data.frame")然后我把它变成一个图,然后是一个自我图。
g <- graph_from_data_frame(df, directed = TRUE, vertices = NULL)
z <- make_ego_graph(g)并使用此循环导出每个网络。
jpeg(filename="EgoGraph%03d.jpeg")
for (i in 1:length(z)) { plot(z[[i]]) }
dev.off()发布于 2018-07-31 00:29:14
好吧,有些自我网络是“从”的,有些是“到”的。我想你希望名字是用来生成网络的任何一个节点。自我网络和顶点的顺序是一样的,所以你只需要用顶点的名字作为文件名的基础。举你的例子来说,这起作用了。
setwd("Ego_pdf") # set this to someplace reasonable
for(i in 1:length(z)) {
pdf(paste0(V(g)[i]$name, ".pdf"))
plot(z[[i]])
dev.off()
}这只是循环通过顶点索引,将输出的名称设置为顶点名称,绘制自我网络并关闭pdf,以便为下一个输出做好准备。
https://stackoverflow.com/questions/51603769
复制相似问题