首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多种图形的Venn图

多种图形的Venn图
EN

Stack Overflow用户
提问于 2015-10-21 21:25:19
回答 1查看 3.2K关注 0票数 4

是否有一种方法可以将下面的venn图作为下面两个柱状图之后的第三个图??我想把两张维恩图放在另一张上面

代码语言:javascript
复制
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)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-10-22 12:40:03

扩展到MrFlicks和我上面的评论。

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

你的数据

代码语言:javascript
复制
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)

排列基准面和栅格图

代码语言:javascript
复制
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组合

代码语言:javascript
复制
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)

可以将任一方法的布局更改为所需的布局。

票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33269538

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档