首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >循环,以R中的节点ID作为文件名,为ego网络中的每个节点创建PDF。

循环,以R中的节点ID作为文件名,为ego网络中的每个节点创建PDF。
EN

Stack Overflow用户
提问于 2018-07-31 00:03:13
回答 1查看 100关注 0票数 0

我用R从iGraph中的一个图中创建自我网络,根据这个question得到的答案。然后,我想将每个自我网络导出为PDF或图像文件(最好是PDF)中的一个情节。

由于在完整的dataframe中有788个‘自我网络’,我想让PDF的文件名匹配网络的相关节点ID,即dataframe的'From‘列。否则很难找到我想要的特定网络。这是如何做到的呢?

这里是网络的一个例子

代码语言:javascript
复制
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")

然后我把它变成一个图,然后是一个自我图。

代码语言:javascript
复制
g <- graph_from_data_frame(df, directed = TRUE, vertices = NULL)
z <- make_ego_graph(g)

并使用此循环导出每个网络。

代码语言:javascript
复制
jpeg(filename="EgoGraph%03d.jpeg")
for (i in 1:length(z)) { plot(z[[i]]) }
dev.off()
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-31 00:29:14

好吧,有些自我网络是“从”的,有些是“到”的。我想你希望名字是用来生成网络的任何一个节点。自我网络和顶点的顺序是一样的,所以你只需要用顶点的名字作为文件名的基础。举你的例子来说,这起作用了。

代码语言:javascript
复制
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,以便为下一个输出做好准备。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51603769

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档