2010-06-28 11 views
5

Bevor ich die eigentlichen Daten präsentiere, möchte ich ein Diagramm erstellen, das identisch ist mit demjenigen mit Daten, aber ohne die Datenpunkte darin. Dies hilft mir zu erklären, wie man eine solche Handlung interpretiert, ohne das Publikum mit den tatsächlichen Daten, die in der Handlung enthalten sind, abzulenken.Die Legende in einem leeren ggplot färben

Also im folgenden Code würde ich grundsätzlich den geom_point() mit geom_blank() austauschen wollen. Kein Problem.

Dadurch werden jedoch auch die Farb- und Größeninformationen aus den vom Plotcode erstellten Legenden entfernt. Gibt es eine Möglichkeit, das zurückzubekommen?

Was ist der richtige Weg, um die Farbangaben zurück in die Legende (n) zu bekommen. Jetzt zeigen sie nur die Werte der verschiedenen Ebenen eines bestimmten Parameters (Farbe oder Größe) an, aber nicht das eigentliche grafische Element (eine Farbe oder die Größe eines Punktes), das zu einem bestimmten Level gehört.

Antwort

0

Könnten Sie zwei geom_points() - einen mit der Farbe Ihres Hintergrunds?

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

Vielen Dank für Ihren Vorschlag! Ich dachte schon an diese Idee, aber verworfen, weil ich eher das Standard-Graustufen-Raster mag, das ggplot() verwendet. So ist es in diesem Fall sehr schwierig, die richtige Farbe zu finden, die in den Hintergrund blendet (auch weil jeder Punkt zwei Farben haben muss, eine für den Hintergrund und wenn er eine Gitterlinie schneidet, auch weiß). – Paul

+0

Das macht Sinn. Sie könnten immer nur die Legende und ein leeres Grundstück plotten. ein bisschen so: http://learnr.wordpress.com/2009/05/26/ggplot2-two-or-mor-plots-sharing-the-same-legend/ – Andreas

2

Wie wäre es, die tatsächlichen Punkte außerhalb des Plotfensters zu verstecken? Etwas in diese Richtung:

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

Am Ende Aniko Vorschlag mitnimmt (die ich zunächst nicht an der Arbeit bekommen konnte, so verworfen, unrightly so) kam ich mit dem folgenden Code auf.

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

es also war etwa nur auf einer Achse, um Ihre Daten verschieben und dann mit Ausnahme jenes Teils von

1

Ein einfacher Weg, dies würde zu tun, um die Größe Option zu verwenden:

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