zx8754 - 8 months ago 55

R Question

How can we plot Network plot (*igraph package plot*) and Venn diagram (*VennDiagram gList object*) **side-by-side in one PDF page**?

Tried to follow below solutions, didn't work:

Plot gList side by side

Plot 2 tmap objects side-by-side

Side-by-side Venn diagram using Vennerable

Here is an example, which plots them in two pages. I used

`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()

Answer Source

Taking inspiration from the first link above, you can "trick" your way out by making coexist a "regular" `plot`

and a `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()
```