【问题标题】:Venn diagrams in multiple figure [duplicate]多图中的维恩图[重复]
【发布时间】:2015-10-21 21:25:19
【问题描述】:

有没有办法在下面的两个直方图之后将以下维恩图作为第三个数字? 我想让两个维恩图一个在另一个之上

library(VennDiagram)

plus.venn<-draw.pairwise.venn(368, 1171, 149) #venn diagram 1

minus.venn<-draw.pairwise.venn(349, 1335, 173) #venn diagram 2

par(mfrow=c(1,3))

a<-sample(1:10000,3000)

b<-sample(5000:15000,3000)

hist(a)

hist(b)

【问题讨论】:

  • draw.pariwise.venn 似乎使用 grid 图形,而 hist 使用基本图形。把两者混在一起并不好玩。你能用ggplot2lattice 创建一个网格友好的直方图吗?
  • 好的...实际上我不确定哪种方法是实现这一目标的最佳方式...
  • 如果你想结合文代图(网格图形)和直方图(基础图形)你可以使用包gridBase(一个例子here)。但是,如果您遵循 MrFlicks 的建议,在网格中绘制所有 oyur 图,您可能会得到更好的图。

标签: r venn-diagram


【解决方案1】:

在上面的 MrFlicks 和我的 cmets 上展开。

您可以使用gridBase 包组合基本图形和网格图形。但是,如果您不受限于使用基本 R 图形,您可能会发现使用基于网格的图形包生成所有绘图并使用 gridExtra 包将它们组合起来更容易。

您的数据

library(VennDiagram)

plus.venn <- draw.pairwise.venn(368, 1171, 149) #venn diagram 1
minus.venn <-draw.pairwise.venn(349, 1335, 173) #venn diagram 2
a <-sample(1:10000,3000)
b <-sample(5000:15000,3000)

排列基础图和网格图

library(grid)
library(gridBase)

# Layout of plots - 4 plots of equal size
layout(matrix(1:4, 2, byrow = TRUE))

# First & second base plot
hist(a)
hist(b)

# Grid regions of current base plot (ie from frame)
frame()
vps <- baseViewports()
pushViewport(vps$inner, vps$figure, vps$plot)
grid.draw(plus.venn)
popViewport(3)

# fourth
frame()
vps <- baseViewports()
pushViewport(vps$inner, vps$figure, vps$plot)  
grid.draw(minus.venn)
popViewport(3)

哪个产生

或使用ggplot2 生成直方图并使用grid.arrange 组合

library(ggplot2)
library(gridExtra)

grid.arrange(qplot(a, geom="histogram") + theme_classic(),
             qplot(b, geom="histogram") + theme_classic(),
             grobTree(plus.venn),
             grobTree(minus.venn),
             ncol=2)

哪个产生

您可以将任一方法的布局更改为您想要的。

【讨论】:

    猜你喜欢
    • 2013-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-19
    相关资源
    最近更新 更多