2012-05-20 24 views
10

Soy relativamente nuevo en ggplot2 y tengo problemas para agregar etiquetas apropiadas a mis contornos.R: Cómo etiquetar contornos específicos usando direct.label

Usando el ejemplo del volcán clásico, puedo añadir etiquetas al gráfico de contorno predeterminado:

library(plyr) 
library(ggplot2) 
library(directlabels) 
library(reshape) 
volcano<-melt(volcano) 
v<-ggplot(volcano, aes(x,y,z=z)) 
e<-v + stat_contour(aes(colour=..level..)) 
direct.label(e) 

En el ejemplo anterior, se añaden apropiadamente las etiquetas, pero las cosas se vuelven más complicadas si intento para especificar mi propia romper los puntos de los contornos:

e<-v + stat_contour(aes(breaks=c(160, 170, 180), colour=..level..)) 
direct.label(e) 

Ahora, los contornos son especificadas por los descansos que he proporcionado, pero todavía aparecen las etiquetas para todos los contornos por omisión. ¿Cómo solo trazo las etiquetas para los contornos graficados?

Un problema relacionado, ¿cómo puedo trazar las etiquetas para los niveles de contorno no incluidos en el valor predeterminado? Diga un descanso de 165:

e<-v + stat_contour(aes(breaks=c(165), colour=..level..)) 
direct.label(e) 

¡Gracias por cualquier ayuda!

+2

Vale la pena señalar que direct.label() está en el paquete directlabels. –

+0

Ya, gracias por señalar eso. –

+0

¿Debería volver a publicar esta pregunta, o la gente sigue mirándola? –

Respuesta

3

No podía soportar ver una vieja pregunta sin respuesta con una solución tan fácil.

El problema simple era el mapeo dentro de stat_contour(). Su llamada debe ser:

v<-ggplot(volcano, aes(x=X1,y=X2,z=value)) # specify the mapping properly 
e<-v + stat_contour(aes(colour=..level..), breaks=c(160, 170, 180)) 
direct.label(e) 

Con los descansos no incluidos en la asignación de AES, y la colour=..level.. incluido.

enter image description here

+4

Parece que no funciona con 'ggplot2' version'> 2.0.0'. – jaimedash

Cuestiones relacionadas