【发布时间】:2017-06-07 01:35:04
【问题描述】:
我想出了一个方法来完成这个,但它需要大量的猜测,所有的维恩图或欧拉图包似乎只允许你将出现的总数放在圆圈内。
数据:
name=c('itm1','itm2','itm3','itm4','itm5','itm6','itm7','itm8','itm9','itm0')
x=c(5,2,3,5,6,7,7,8,9,2)
y=c(6,9,9,7,6,5,2,3,2,4)
z=data.frame(name,x,y)
绘制点并标记它们:
plot(z$x,z$y,type='n')
text(z$x,z$y,z$name)
手动将圆圈放在点上:
par(new=T)
symbols(3,7,circles=2.5,add=T,bg='#34692499',inches=F)
symbols(6,6,circles=1.5,add=T,bg='#64392499',inches=F)
symbols(8,3,circles=2,add=T,bg='#24399499',inches=F)
所以这是一个非常繁琐的过程,需要给每个项目一个 x 和 y 坐标,然后猜测圆圈的位置和半径。
理想情况下,我想使用我最初拥有的数据集,如下所示:
cat1=c('itm2','itm3','itm0')
cat2=c('itm1','itm4','itm5','itm6')
cat3=c('itm6','itm7','itm8','itm9')
然后将点分配到正确的圆圈中。有更好的方法吗?
【问题讨论】:
-
所以绘制点的 x 和 y 值对您来说无关紧要吗?你是如何确定圆圈大小的?
-
我只是手动放置它们在情节和来源之间来回移动。 x 和 y 值无关紧要,只要在同一个圆圈中的值聚集在一起即可。在我绘制了这些点之后,我以同样乏味的方式制作了圆圈,查看圆圈是否包含应该在其中的点,如果没有,我相应地更改它的坐标和大小。然后我再次移动了一些点,使它们看起来更好。对于 10 个项目的样本,这不是什么大问题,但我的数据有更多,我相信其他人也有更大的数据集。
-
放置点时是否要确认重叠区域(=> 项目 6 必须在 cat3 和 cat2 的重叠区域中)?在这种情况下,您可能想要合并 R 的空间包。
-
@lukeA 很抱歉回复晚了,正忙于工作。感谢您将我指向空间方向,但我需要有坐标或将每个项目与一个类别相关联。据我所知,没有空间包或 GIS 允许一个点存在于两个多边形的边界内。但是,您让我以不同的方式想到这一点,我决定使用 igraph 包将项目放置在它们应该在的位置,然后我只需要在它们上面画圆圈或椭圆。不完美,但比我以前的更好。
标签: r venn-diagram