r - 并排输出维恩 gList 对象和网络图

标签 r igraph r-grid venn-diagram

这个问题在这里已经有了答案:





Arrange base plots and grid.tables on the same page

(1 个回答)


4年前关闭。




我们如何在一个 PDF 页面 中并排绘制网络图(igraph 包图)和维恩图(VennDiagram gList 对象)

尝试遵循以下解决方案,没有奏效:
Plot gList side by side
Plot 2 tmap objects side-by-side
Side-by-side Venn diagram using Vennerable

这是一个示例,它将它们绘制在两页中。我使用 grid.newpage() 让它在不同的页面中绘制,否则它会被绘制在彼此的顶部。

library(grid)
library(igraph)
library(VennDiagram)

#network graph object
relations <- data.frame(from=c("Bob", "Cecil", "Cecil", "David",
                               "David", "Esmeralda"),
                        to=c("Alice", "Bob", "Alice", "Alice", "Bob", "Alice"))
g <- graph_from_data_frame(relations, directed=TRUE)

# venn plot object
plotVenn <- venn.diagram(
  list(A = 1:150, B = 121:170),
  filename = NULL)
class(plotVenn)
# [1] "gList"

# output to PDF, outputs into 2 pages, I need 1 page 2 plots side-by-side
pdf("temp.pdf")

#network
igraph::plot.igraph(g)

#venn
grid.newpage()
grid.draw(plotVenn)

dev.off()

enter image description here

最佳答案

从上面的第一个链接中汲取灵感,您可以通过使共存成为“常规”来“欺骗”自己的出路plot和一个 grid :

pdf("temp.pdf", )
layout(matrix(1:2, nrow=1))
igraph::plot.igraph(g)
plot.new()
pushViewport(viewport(layout = grid.layout(1, 2, widths=unit(c(0.5, 0.5), "npc"))))
pushViewport(viewport(layout.pos.col = 2))
grid.draw(plotVenn)
popViewport(0)
dev.off()

enter image description here

关于r - 并排输出维恩 gList 对象和网络图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40781252/

相关文章:

r - 如何使用端口号从 R 终止 Windows 应用程序?

R:使用 igraph 有效地查找特殊大小的团

r - 如何在 R 和 ggplot2 中获得具有多个数据集的单个趋势线?

r - 在数据框单元格中显示 2 个数字

r - R 行中观察值一起出现的频率

r - pdf 设备尺寸不一致

r - 如何使用plot_grid在没有任何空间的情况下放置绘图?

r - 使 ggplot 完全适合视口(viewport)大小

r - 使用Rcpp在C++中的R中应用优化函数

r - 为什么聚类系数与我的程序和 igraph R 的库不同?