如何解决R:保存多个 igraph 图
我有一个使用 igraph 包创建多个网络图并将网络存储在列表中的函数(g.list 是最终输出)。
该函数看起来像这样 - 并使用数据帧列表(节点和边)来创建网络。
network.fun <- function(nodes,edges){
g <- graph_from_data_frame(d = edges,vertices = nodes,directed = FALSE)
V(g)$color <- ifelse(V(g)$Treatment == "Water",ff.1[3],ff.1[4])
w1 <- rescale(E(g)$weight,to = c(0,10))
m1 <- layout_nicely(g)
plot(g,vertex.label.color = "black",edge.color = 'dark grey',edge.width = w1,layout = m1,vertex.size = 24,vertex.label.font=2,vertex.label.dist=2.3,vertex.label.degree=4.3)
return(g)
}
g.list <- map(out.list,~ network.fun(nodes = .x$nodes,edges = .x$edges))
我想知道是否可以在创建每个图时将其保存为 png 文件。我创建了 108 个图,因此还希望根据用于创建它们的节点/边数据框名称来命名这些图。
解决方法
看起来您不能将 igraph
保存到对象,但您可以通过将其包装在 ggsave()
中直接保存图,如下所示:
ggsave(paste0(plotName,".png),plot(g,vertex.label.color = "black",edge.color = 'dark grey',edge.width = w1,layout = m1,vertex.size = 24,vertex.label.font=2,vertex.label.dist=2.3,vertex.label.degree=4.3),height = 5,width = 5,dpi = 1000)
你可以给你的函数添加一个 plotName
参数并用一个字符串来定义它(例如 plotName = "plot_1"
):如果你在 out.list
上映射,你可以使用 { 的名称{1}} 像这样:
out.list
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。