【问题标题】:side by side plot with igraph与 igraph 并排绘图
【发布时间】:2017-09-08 19:02:23
【问题描述】:

我尝试在 pdf 文件的一页中并排绘制两个图表,如下所示:

library(igraph)
library(ggplot2)
post <- topicmodels::posterior(ldaOut)
layout(matrix(1,1 byrow = TRUE))
cor_mat <- cor(t(post[["terms"]]))
cor_mat[ cor_mat < .05 ] <- 0
diag(cor_mat) <- 0
graph <- graph.adjacency(cor_mat, weighted=TRUE, mode="lower")
graph <- delete.edges(graph, E(graph)[ weight < 0.05])
E(graph)$edge.width <- E(graph)$weight* 15
V(graph)$label <- paste("Topic", V(graph))
V(graph)$size <- colSums(post[["topics"]]) * 2
set.seed(110)
pdf("all.pdf", width=400,height=350,res=72)
p1 <- plot.igraph(graph, edge.width = E(graph)$edge.width, 
    edge.color = "blue", vertex.color = "green", 
    vertex.frame.color = NA, vertex.label.color = "black")
clp <- cluster_label_prop(graph)
class(clp)
p2 <- plot(clp, graph, edge.width = E(graph)$edge.width, edge.color = "blue",vertex.color = "green")
pushViewport(viewport(layout = grid.layout(1, 2)))
print(p1, vp = viewport(layout.pos.row = 1, layout.pos.col = 1))
print(p2, vp = viewport(layout.pos.row = 1, layout.pos.col = 2))
dev.off()

但结果在两个单独的页面而不是一页中显示了两个图。有关如何解决此问题的任何建议?

【问题讨论】:

  • 发布可重现的示例。什么是ldaOutpost
  • 尝试用par(mfrow=c(1,2))替换你的layout语句
  • @PoGibas 这些是我处理的数据集,我对此没有问题。我的问题来自绘图结果。
  • @G5W 问题还是一样,它将两个分开的图打印到 pdf 的页面中。
  • Doh,我应该看到这个。请将par(mfrow=c(1,2)) 紧跟在pdf 声明之后pdf("all.pdf", width=400,height=350,res=72)

标签: r pdf plot


【解决方案1】:

这样问题就有答案了……

问题在于,当您使用 pdf 语句更改为新的图形设备时,您会失去任何想要 1×2 显示图形的指示。一个解决方案是添加

par(mfrow=c(1,2)) 

在您的 pdf 声明之后。如果将您的 layout 语句放置在那里,它可能会起作用。

【讨论】: