循环创建自我网络中每个节点的 PDF,节点 ID 作为 R 中的文件名
Loop to create PDFs of each node in ego network with node ID as file names in R
我正在使用 R 从 iGraph 中的图形创建自我网络,根据对此 友情提供的答案。然后我想将每个自我网络导出为 PDF 或图像文件(最好是 PDF)中的图。
由于完整数据框中有 788 'ego networks',我想让 PDF 的文件名与网络的相关节点 ID 相匹配,即数据框的 '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()
好吧,有些自我网络是 "from",有些是“to”。我认为您希望名称是用于生成网络的任何节点。
自我网络与顶点的顺序相同,因此您可以只使用顶点名称作为文件名的基础。对于您的示例,这有效。
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,以便您为下一个做好准备。
我正在使用 R 从 iGraph 中的图形创建自我网络,根据对此
由于完整数据框中有 788 'ego networks',我想让 PDF 的文件名与网络的相关节点 ID 相匹配,即数据框的 '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()
好吧,有些自我网络是 "from",有些是“to”。我认为您希望名称是用于生成网络的任何节点。 自我网络与顶点的顺序相同,因此您可以只使用顶点名称作为文件名的基础。对于您的示例,这有效。
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,以便您为下一个做好准备。