Tengo una función R que produce elipses de confianza del 95% para diagramas de dispersión. La salida se parece a esto, tener un valor predeterminado de 50 puntos para cada elipse (50 filas):¿Cómo se puede superponer una elipse de datos en un diagrama de dispersión ggplot2?
[,1] [,2]
[1,] 0.097733810 0.044957994
[2,] 0.084433494 0.050337990
[3,] 0.069746783 0.054891438
quisiera superponer varias de estas elipses para cada nivel de un factor llamado 'sitio' en un ggplot2
diagrama de dispersión, producido a partir de este comando:
> plat1 <- ggplot(mapping=aes(shape=site, size=geom), shape=factor(site)); plat1 + geom_point(aes(x=PC1.1,y=PC2.1))
esto se ejecuta en un conjunto de datos, llamado dflat
que se parece a esto:
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
El resultado es bien, pero cuando intento agregar la elipse (digamos que para éste sitio, llamado "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]))
me sale un mensaje de error: "Error in data.frame(x = c(0.0977338099339815, 0.0844334944904515, 0.0697467834016782, : arguments imply differing number of rows: 50, 211
he logrado solucionar este problema en el pasado, pero no recuerdo cómo. Parece que geom_path confía en los mismos puntos en lugar de trazar nuevos. Cualquier ayuda sería apreciada.
hizo intenta cambiar el valor por defecto de 50 puntos a 211? ¿Funciona? Puede que tenga que agregar otro argumento a su función (el número de puntos) –
Hola, gracias por la respuesta rápida. La función puede cambiar el número de puntos, y lo intenté con 211 puntos. Produce un extraño círculo muy grueso. Creo que no se trata de subconjunto de los datos, en primer lugar, y debe poder trazarlo con 50 puntos: al menos de la documentación, puede usar diferentes conjuntos de datos en la misma parcela, por lo que, naturalmente, diferentes números de puntos deberían ser bien también. – radu
será mucho más fácil para nosotros si proporciona un ejemplo reproducible mínimo. – xiechao