2009-11-29 19 views
11

Estoy tratando de usar ggplot2 para crear y etiquetar un diagrama de dispersión. Las variables que estoy dibujando están escaladas de forma tal que los ejes horizontal y vertical se trazan en unidades de desviación estándar (1,2,3,4, ... ect de la media). Lo que me gustaría poder hacer es etiquetar SOLAMENTE aquellos elementos que están más allá de un cierto límite de desviaciones estándar de la media. Idealmente, este etiquetado estaría basado en otra columna de datos.ggplot2 Scatter Plot Labels

¿Hay alguna manera de hacerlo?

He revisado el manual en línea, pero no he podido encontrar nada sobre la definición de etiquetas para datos graficados.

¡Ayuda se aprecia!

Gracias!

BEB

Respuesta

15

Uso de subconjuntos:

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) 
4

El etiquetado se puede realizar 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) 
1

Subconfiguración 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 q trama:

qplot(a, b, data = x, label = lab, geom = c('point','text'))