2010-06-28 13 views
5

Prima di presentare i dati effettivi, vorrei fare un grafico identico a quello con i dati ma poi senza i punti dati lì dentro. Questo mi aiuta a spiegare come interpretare tale trama senza distrarre il pubblico con i dati reali che saranno nella trama.Ottenere la legenda colorare in un ggplot vuoto

Quindi nel codice qui sotto vorrei sostanzialmente scambiare il geom_point() con geom_blank(). Nessun problema.

Tuttavia, questo rimuove anche il colore e le informazioni sulle dimensioni dalle legende create dal codice di stampa. C'è un modo per riaverlo?

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

Qual è il modo corretto per riportare le indicazioni dei colori nella/e legenda/e. Ora visualizzano solo il/i valore/i dei vari livelli di un determinato parametro (colore o dimensione) ma non l'elemento grafico reale (un colore o una dimensione di un punto) associato a un determinato livello.

risposta

0

Puoi tracciare due geom_points() - uno con il colore dello sfondo?

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

Grazie per il suggerimento! Ho già pensato a questa idea, ma l'ho scartata perché preferisco la griglia di scala di grigi predefinita che usa ggplot(). Quindi in questo caso è molto difficile trovare il colore giusto che sfuma sullo sfondo (anche perché ogni punto deve avere due colori, uno per lo sfondo e quando interseca una linea della griglia, anch'essa bianca). – Paul

+0

Questo ha senso. puoi sempre tracciare solo la leggenda e una trama vuota. un po 'come questo: http://learnr.wordpress.com/2009/05/26/ggplot2-two-or-more-plots-sharing-the-same-legend/ – Andreas

2

Come nascondere i punti effettivi al di fuori della finestra di disegno? Qualcosa in questo senso:

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

Alla fine, prendendo il suggerimento di Aniko lungo (che inizialmente non riuscivo a lavorare, quindi scartato, unrightly così) mi si avvicinò con il seguente codice.

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

Così era circa appena spostando intorno ai vostri dati su un asse e quindi esclusa la parte

1

Un modo semplice per farlo sarebbe quello di utilizzare l'opzione di dimensione:

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