2010-06-28 12 views
5

Antes de presentar los datos reales, me gustaría hacer un diagrama idéntico al de los datos pero sin los puntos de datos allí. Esto me ayuda a explicar cómo interpretar una trama así sin distraer a la audiencia con los datos reales que estarán en la trama.Obteniendo la leyenda para colorear en un ggplot vacío

Así que en el código de abajo, básicamente, me gustaría cambiar el geom_point() con geom_blank(). No hay problema.

Sin embargo, esto también elimina la información de color y tamaño de las leyendas que crea el código de trazado. ¿Hay alguna forma de recuperar esto?

ggplot(vas, aes(x=time, y=pain, colour=light.color, size=light.intensity)) + 
    #geom_point(na.rm=FALSE) + 
    geom_blank() + 
    facet_wrap(~ppno) + 
    scale_colour_manual(values=cols) + 
    scale_y_continuous(name="VAS Pain (a.u.)") + 
    scale_x_continuous(name="Time (minutes)") 

Cuál es la forma adecuada para obtener las indicaciones de color de nuevo en la leyenda (s). Ahora solo muestran los valores de los diversos niveles de un determinado parámetro (color o tamaño) pero no el elemento gráfico real (un color o el tamaño de un punto) que va con un cierto nivel.

Respuesta

0

¿Podría trazar dos geom_points() - uno con el color de su fondo?

ggplot(cars, aes(x=speed, y=dist))+ 
geom_point(aes(col=speed))+ 
geom_point(colour="white")+ 
theme_bw() 
+0

¡Gracias por su sugerencia! Ya pensé en esta idea, pero la descarté porque prefiero la grilla de escala de grises predeterminada que usa ggplot(). Por lo tanto, es muy difícil encontrar el color correcto que se desvanece en el fondo (también porque cada punto debe tener dos colores, uno para el fondo y cuando se cruza con una línea de cuadrícula, también blanco). – Paul

+0

Eso tiene sentido. siempre puedes trazar solo la leyenda y una trama vacía. un poco como esto: http://learnr.wordpress.com/2009/05/26/ggplot2-two-or-more-plots-sharing-the-same-legend/ – Andreas

2

Cómo acerca de cómo ocultar los puntos reales fuera de la ventana de trazado? Algo a lo largo de estas líneas:

ggplot(cars, aes(x=speed+100, y=dist))+ #move x values to the right 
    geom_point(aes(col=speed))+ 
    scale_x_continuous(at=seq(5,125,by=5), limits=c(0,30)) #set plotting window 
0

Al final, tomando la sugerencia de Aniko lo largo (que inicialmente no podía llegar al trabajo, por lo descartado, por lo unrightly) me ocurrió con el siguiente código.

vas2 <- vas 
vas2$time <- vas2$time+181 
pp <- p %+% vas2 #p is the above plot assigned to a variable. 
pp + scale_x_continuous(name="Time (minutes)", limits=c(0,180)) 

Por lo tanto, fue acerca simplemente cambiando alrededor de sus datos en un eje y luego excluida la parte de

1

Una forma sencilla de hacer esto sería utilizar la opción de tamaño:

ggplot(vas, aes(x=time, y=pain, colour=light.color, size=light.intensity)) 
+ geom_point(size=0) 
Cuestiones relacionadas