2015-10-21

Etiquetar un diagrama de dispersión en ggplot2 basándonos en otra columna

Title

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

  • Opción 1
  • 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)
    

  • Opción 2
  • 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

    Referencias

    No hay comentarios:

    Publicar un comentario

    Nube de datos