2011-03-24 15 views
14

Estoy buscando una manera de ocultar una de las leyendas estéticas de la trama creada con el siguiente código. Para escalar el punto color por fecha, tuve que convertir las fechas en números, y prefiero no mostrar la leyenda de la fecha en la trama. Por otro lado, la leyenda de forma es información importante para mostrar. Entiendo que legend.position="none" eliminará completamente la leyenda, pero eso me deja con el problema de cómo comunicar el significado detrás de las formas.Cómo eliminar una estética de una leyenda de ggplot2

library(ggplot2) 
w<-read.table("data.txt", header=TRUE) 
pt.data <- w[w$dt==min(w$dt),] 
p <- ggplot(data=w, aes(OAD,RtgValInt,color=dt,shape=Port)) + 
    geom_jitter(size=3, alpha=0.75) + 
    scale_colour_gradient(limits=c(min(w$dt), 
      max(w$dt)), 
     low="#9999FF", high="#000066") + 
    geom_point(data=pt.data, 
     color="red", size=3, aes(shape=Port)) 
print(p) 

El archivo data.txt incluye las líneas a continuación.

Date   Port OAD   RtgValInt dt 
12/31/2010 Grp1 1.463771 1.833333 14974 
12/31/2010 Grp2 1.193307 2.071429 14974 
11/30/2010 Grp1 1.454115 1.833333 14943 
11/30/2010 Grp2 1.127755 2.071429 14943 
10/29/2010 Grp1 1.434965 2.000000 14911 
10/29/2010 Grp2 1.055758 2.071429 14911 
09/30/2010 Grp1 1.441773 2.000000 14882 
09/30/2010 Grp2 1.077799 2.071429 14882 

enter image description here

Respuesta

10

puede suprimir las leyendas en el nivel de la capa. Si mueve la estética del color desde la llamada inicial a ggplot a la capa de fluctuación, eso parece dar el efecto que busca. Aunque estoy un poco confundido acerca de por qué querrías colorear según la fecha y no proporcionar la clave sobre qué significan los colores ... pero esa es una pregunta más filosófica para que puedas reflexionar.

ggplot(data=w, aes(OAD,RtgValInt,shape=Port)) + 
    geom_jitter(size=3, alpha=0.75, color=dt, legend = FALSE) + 
    scale_colour_gradient(limits=c(min(w$dt), max(w$dt)),low="#9999FF", high="#000066") + 
    geom_point(data=pt.data, color="red", size=3, aes(shape=Port)) 
+1

Aunque esto elimina la leyenda de datos, también elimina la escala de color de los puntos. Las fechas representan períodos históricos fijos (por ejemplo, 1 mes) y sus valores reales no son tan importantes como la importación y la tendencia en el tiempo. – user338714

+14

Creo que probablemente quiera suprimir la leyenda en el nivel de escala: '+ scale_colour_gradient (..., legend = F)' – hadley

+0

¡Eso funcionó a la perfección! Gracias a los dos por su ayuda. – user338714

Cuestiones relacionadas