我有一个R函数,它为散点图产生95%的置信椭圆。输出看起来像这样,具有50点的默认为每个椭圆(50行):数据椭圆如何叠加在ggplot2散点图上?
[,1] [,2]
[1,] 0.097733810 0.044957994
[2,] 0.084433494 0.050337990
[3,] 0.069746783 0.054891438
我想叠加多个这样的椭圆的用于在ggplot2
一个名为“网站”的因素的每一级散点图,该命令产生:
> plat1 <- ggplot(mapping=aes(shape=site, size=geom), shape=factor(site)); plat1 + geom_point(aes(x=PC1.1,y=PC2.1))
这是对数据集运行,称为dflat
它看起来像这样:
site geom PC1.1 PC2.1 PC3.1 PC1.2 PC2.2
1 Buhlen 1259.5649 -0.0387975838 -0.022889782 0.01355317 0.008705276 0.02441577
2 Buhlen 653.6607 -0.0009398704 -0.013076251 0.02898955 -0.001345149 0.03133990
结果是很好,但是当我尝试添加椭圆(假设这一个网站,叫“Buhlen”):
> plat1 + geom_point(aes(x=PC1.1,y=PC2.1)) + geom_path(data=subset(dflat, site="Buhlen"),mapping=aes(x=ELLI(PC1.1,PC2.1)[,1],y=ELLI(PC1.1,PC2.1)[,2]))
我得到一个错误信息:"Error in data.frame(x = c(0.0977338099339815, 0.0844334944904515, 0.0697467834016782, : arguments imply differing number of rows: 50, 211
我已经设法在解决这一问题过去,但我不记得如何。似乎geom_path依赖于相同的点而不是绘制新的点。任何帮助,将不胜感激。
你有没有尝试改变50点默认为211?它工作吗?您可能需要为您的功能添加另一个参数(点数) – 2010-03-07 17:26:42
嗨,感谢您的快速回复。该功能可以改变点的数量,我用211点试了一下。它产生了一个奇怪的很厚的圆圈。我认为它不是数据的子集,首先,它应该能够用50分来绘制它 - 至少从文档中,你可以在同一个绘图上使用不同的数据集,所以自然地,不同数量的点应该是好吧。 – radu 2010-03-07 18:36:39
如果你提供一个最小可重现的例子,它对我们来说会容易得多。 – xiechao 2010-03-08 13:18:39