2017-02-16 52 views
2

我想绘制两组维纳图,其中一组完全落入另一组。我可以得出有R包Venndiagram图这样如何在绘制维恩图时调整圆的位置

enter image description here

library(VennDiagram) 
grid.newpage(); 
venn.plot <- draw.pairwise.venn(area1 =467 ,area2 =273 ,cross.area = 273, 
category = c("Set1", "Set2"),fill = c("darkorange", "dodgerblue1"), 
lty = rep("solid", 2),lwd = c(2,2),col = c("black","black"),cex = 2,cat.cex = 2,cat.pos = c(310, 135), 
cat.dist = 0.09,cat.just = list(c(-1, -1), c(1, 1)), 
ext.pos = 30,ext.dist = -0.05, 
ext.length = 0.85,ext.line.lwd = 2,ext.line.lty = "dashed"); 
grid.draw(venn.plot); 

这听起来像深奥的技巧,而是如何调节圈,说的位置,而不是两个同心圆,让内圈触摸外圈?

类似this one here。我添加了一个不重叠的元素。

我在Venndiagram包中找不到参数,允许我调整圆的位置。

+0

这没有多大意义,因为一个包含了其他。以下是您可以查看的几个示例:https://rstudio-pubs-static.s3.amazonaws.com/13301_6641d73cfac741a59c0a851feb99e98b.html和http://rstudio-pubs-static.s3.amazonaws.com/6401_7582b217798044d3ae87ebbdc47b7562.html – lizzie

+0

@莉齐。感谢您的评论,是的,我检查了您建议的网页,但仍无法找到调整圈子位置的任何论据。我可以通过添加一个非重叠的元素,比如我在帖子中添加的示例,但是... – Jun

回答

1

您可以plotrix试试这个:

library(plotrix) 
area1 = 467 
area2 = 273 
r1 = round(sqrt(area1/pi)) 
r2 = round(sqrt(area2/pi)) 
xc = 8 
yc = 8 
plot(0:40,0:40,type="n",xlab="",ylab="",main="Venn Diagram", xaxt='n', yaxt='n') 
draw.circle(xc+r1,yc+r1,r1,border="black", col="orange",lty=1,lwd=1) 
draw.circle(xc+2*r1-r2,yc+r1,r2,border="black", col="steelblue",lty=1,lwd=1) 
text(xc+2*r1-r2,yc+r1, '272', cex=3) 
text(xc+(r1-r2)/2+1,yc+r1, '195', cex=3) 
text(xc+r1,yc+2*r1+7, 'Set1', cex=3) 
text(xc+r1+r2,1, 'Set2', cex=3) 

enter image description here

+0

其实在文本中有一个错字,它应该是273而不是272. –

+1

是的,它的工作原理! TKS!解决方案比我预想的复杂得多...... PS:有一个小凹凸图(0:40,0:40,type =“n”,xlab =“”,ylab =“”,main =“维恩图“,xaxt ='n',yaxt ='n') 在plot.new()中的错误:图边距过大 – Jun

+1

但可以很容易地通过解决方案建议[这里] http://stackoverflow.com/questions/ “12766166/error-in-plot-new-figure-margins-too-large-in-r – Jun