Problema
Deseamos etiquetar solamente aquellos puntos de un diagrama de dispersión que cumplan una condición basada en otra columna de un data frame. En nuestro ejemplo, solamente aquellos puntos de la columna b cuyo valor sea mayor de 0.5
set.seed(1)
x <- data.frame(a = 1:10, b = rnorm(10))
x$lab <- letters[1:10]
a b lab
1 1 -0.6264538 a
2 2 0.1836433 b
3 3 -0.8356286 c
4 4 1.5952808 d
5 5 0.3295078 e
6 6 -0.8204684 f
7 7 0.4874291 g
8 8 0.7383247 h
9 9 0.5757814 i
10 10 -0.3053884 j
Solución
Crear un subconjunto (subset) dentro de la función geom_text.
ggplot(data = x, aes(a, b, label = lab)) +
geom_point() +
geom_text(data = subset(x, abs(b) > 0.2), vjust = 1.5)
Asignando NA a aquellos valores que no queremos etiquetar
x$lab[!(abs(x$b) > 0.5)] <- NA
ggplot(data = x, aes(a, b, label = lab)) +
geom_point() +
geom_text(vjust = 1.5)
Usando qplot:
qplot(a, b, data = x, label = lab, geom = c('point','text'), vjust = 1.5)
Resultado
Entradas relacionadas
- Etiquetar selectivamente los puntos de un diagrama de dispersión con ggplot2
- Etiquetar interactivamente los puntos de un diagrama de dispersión en R
Referencias
No hay comentarios:
Publicar un comentario