gpt4 book ai didi

r - 在 grid.layout 中增加 venn.diagramm 图之间的边距

转载 作者:行者123 更新时间:2023-12-02 03:38:20 25 4
gpt4 key购买 nike

我正在尝试在网格中显示 4 个 venn.diagramm 图。我需要增加图表之间的空间,以便我的图例不与其他图表重叠(或在图表之外)。

我尝试通过在函数 venn.diagram 中使用 margin 来做到这一点,但这会导致增加图表和它们各自的字幕之间的距离(什么不是好)。

我看到了一些与我相关的问题(例如 controlling the inner figure margin within grid.layout ),但它们对我的情况不起作用。

这是我的代码:

library(VennDiagram)
library(grid)
library(gridBase)
library(lattice)

# data
l1 <- list(Deletion=1:1420, Insertion=967:2042)
l2 <- list(Deletion=1:502, Insertion=324:660)
l3 <- list(Deletion=1:142, Insertion=85:184)
l4 <- list(Deletion=1:161, Insertion=22:217)
venns <- list(Subtargets=l1, Targets=l2, Genes=l3, Promoters=l4)

# set up grid layout
gl <- grid.layout(nrow=2, ncol=2)

# setup viewports
vp.1 <- viewport(layout.pos.col=1, layout.pos.row=1)
vp.2 <- viewport(layout.pos.col=2, layout.pos.row=1)
vp.3 <- viewport(layout.pos.col=1, layout.pos.row=2)
vp.4 <- viewport(layout.pos.col=2, layout.pos.row=2)

# init layout
pushViewport(viewport(layout=gl))

for (i in 1:4){
# access the relevant viewport
vp <- paste("vp.", i, sep="")
pushViewport(get(vp))

# draw the venn diagram
temp <- venn.diagram(venns[[i]], fill = c("red", "green"), alpha = c(0.5, 0.5),
cex = 1,cat.fontface = 2, lty =2, filename = NULL, sub=names(venns)[i],
margin = 0.5, sub.pos = c(0.5, 0.78), sub.col="blue")

# plot the venn diagram on the viewport
grid.draw(temp)

# done with this viewport
popViewport()
}

有什么想法吗?也许通过增加视口(viewport)之间的边距而不更改视口(viewport)内的参数?

最佳答案

我以前遇到过这个问题,我的解决方案是创建更多网格。

gl <- grid.layout(nrow=3, ncol=3, widths = c(1, 0.2, 1), heights = c(1, 0.2, 1))
grid.show.layout(gl)

然后您可以在角网格上绘制维恩图。

enter image description here

关于r - 在 grid.layout 中增加 venn.diagramm 图之间的边距,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21855580/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com