Ho una funzione R che produce ellissi di confidenza del 95% per i grafici a dispersione. L'output è simile al seguente, avendo un valore predefinito di 50 punti per ogni ellisse (50 righe):Come si può sovrapporre un'ellisse di dati su un diagramma a dispersione ggplot2?
[,1] [,2]
[1,] 0.097733810 0.044957994
[2,] 0.084433494 0.050337990
[3,] 0.069746783 0.054891438
Vorrei sovrapporre un certo numero di tali ellissi per ogni livello di un fattore chiamato 'sito' su un ggplot2
grafico a dispersione, prodotta da questo comando:
> plat1 <- ggplot(mapping=aes(shape=site, size=geom), shape=factor(site)); plat1 + geom_point(aes(x=PC1.1,y=PC2.1))
questo viene eseguito su un set di dati, chiamato dflat
che assomiglia a questo:
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
Il risultato è bene, ma quando provo ad aggiungere l'ellisse (diciamo per questo un sito, chiamato "Bühlen"):
> 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]))
ricevo un messaggio di errore: "Error in data.frame(x = c(0.0977338099339815, 0.0844334944904515, 0.0697467834016782, : arguments imply differing number of rows: 50, 211
sono riuscito a risolvere questo problema in il passato, ma non riesco a ricordare come. Sembra che geom_path si basi sugli stessi punti invece di tracciarne di nuovi. Qualsiasi aiuto sarebbe apprezzato.
Hai provato a modificare l'impostazione predefinita di 50 punti a 211? Funziona? Potrebbe essere necessario aggiungere un altro argomento alla funzione (il numero di punti) –
Ciao, grazie per la rapida risposta. La funzione può cambiare il numero di punti, e l'ho provato con 211 punti. Produce uno strano cerchio molto spesso. Penso che non sia la sottomissione dei dati, prima di tutto, e dovrebbe essere in grado di tracciarli con 50 punti - almeno dalla documentazione, è possibile utilizzare diversi set di dati sullo stesso grafico, quindi naturalmente, diversi numeri di punti dovrebbero essere ok anche io – radu
sarà molto più facile per noi se fornisci un esempio riproducibile minimo. – xiechao