我有一個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