Pergunta

Eu estou tentando usar ggplot2 para criar e rotular um gráfico de dispersão. As variáveis ??que estou que traçam são ambas dimensionadas de tal forma que o horizontal e o eixo vertical estão representados em unidades de desvio padrão (1,2,3,4, ... ect a partir da média). O que eu gostaria de ser capaz de fazer é rótulo apenas aqueles elementos que estão além de um certo limite de desvios padrão da média. Idealmente, esta rotulagem seria baseada fora de uma outra coluna de dados.

Existe uma maneira de fazer isso?

Eu olhei através do manual on-line, mas eu não tenho sido capaz de encontrar qualquer coisa sobre a definição de etiquetas para dados traçados.

Ajuda é apreciada!

Obrigado!

BEB

Foi útil?

Solução

Use subsetting:

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)

Outras dicas

A rotulagem pode ser feito da seguinte maneira:

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)

Subdefinição fora da função 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 em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top