Pregunta

Estoy tratando de usar ggplot2 para crear y etiquetar un diagrama de dispersión. Las variables que estoy trazando están escaladas de manera tal que el eje horizontal y el vertical están trazados en unidades de desviación estándar (1,2,3,4, ... ect de la media). Lo que me gustaría poder hacer es etiquetar SOLO aquellos elementos que están más allá de un cierto límite de desviaciones estándar de la media. Idealmente, este etiquetado se basaría en otra columna de datos.

¿Hay alguna manera de hacer esto?

He revisado el manual en línea, pero no he podido encontrar nada sobre cómo definir etiquetas para datos trazados.

¡Se agradece la ayuda!

¡Gracias!

BEB

¿Fue útil?

Solución

Usar subconjunto:

library(ggplot2)
x <- data.frame(a=1:10, b=rnorm(10))
x$lab <- letters[1:10]
ggplot(data=x, aes(a, b, label=lab)) + 
  geom_point() + 
  geom_text(data = subset(x, abs(b) > 0.2), vjust=0)

Otros consejos

El etiquetado se puede hacer de la siguiente manera:

library("ggplot2")
x <- data.frame(a=1:10, b=rnorm(10))
x$lab <- rep("", 10)   # create empty labels
x$lab[c(1,3,4,5)] <- LETTERS[1:4]   # some labels
ggplot(data=x, aes(x=a, y=b, label=lab)) + geom_point() + geom_text(vjust=0)

Subconjunto fuera de la función ggplot:

library(ggplot2)
set.seed(1)
x <- data.frame(a = 1:10, b = rnorm(10))
x$lab <- letters[1:10]
x$lab[!(abs(x$b) > 0.5)] <- NA
ggplot(data = x, aes(a, b, label = lab)) + 
  geom_point() + 
  geom_text(vjust = 0) 

Usando qplot:

qplot(a, b, data = x, label = lab, geom = c('point','text'))
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top