2009-09-25 9 views

Antwort

36

Die ggplot Art und Weise wäre es scale_shape_manual zu verwenden und die gewünschten Formen in der values Argument zu tun:

qplot(1:10, y, shape=b) + scale_shape_manual(values = c(0, 5, 6, 15)) 

result of above

Die Formen sind die gleichen wie die üblichen 0-25 Indizes: http://yusung.blogspot.com/2008/11/plot-symbols-in-r.html

+1

Dies ist eine viel bessere Art, es zu tun, wie es die Legende behält und mit ggplot, nicht Basisgrafiken arbeitet. Ich lerne hier jeden Tag mehr über ggplot, danke! – Vince

+0

Hallo, wie kann ich die Größe der Symbole ändern, wenn Sie scale_shape_manual() verwenden? Ich habe versucht, geom_point (Größe = 4), aber die Ausgabe war doppelte Symbole (zwei Größen). Jede Hilfe wird geschätzt. – Rafael

+0

Wenn Sie qplot verwenden, muss die 'size = 4' in den' qplot'-Aufruf nicht getrennt aufgeführt werden. Wenn Sie einen zusätzlichen "Geom-Punkt" hinzufügen, erstellen Sie effektiv eine zweite Ebene. (Das ist übrigens der Grund, warum du 'qplot' nicht verwenden solltest - es ist verwirrend.) – Harlan

6
> y <- rnorm(10) 
> b <- as.factor(sample(1:4,10,replace=T)) 
> qplot(1:10, y, shape=b) 
> qplot(1:10, y, pch=letters[1:10], cex=6) 

Ist das was du meinst? Ich kann mir vorstellen, dass man beliebige Zeichen von R benutzen kann ...

Das mag zwar nicht sehr "ggplot" sein, aber auf der man-Seite steht: "Du kannst es benutzen, als würdest du das benutzen" Plot 'Funktion. ". :-)

alt text

+0

'Fehler: scale_shape_discrete mit maximal umgehen kann von 6 diskreten Werten, aber Sie haben 10. Sehen Sie skala_manual für eine mögliche Alternative – isomorphismes

14

Zu ergänzen t Harlans Antwort, hier ist eine Referenz für die zur Verfügung stehenden Formen - von 0 unten links beginnen und lesen Sie rechts und dann nach oben (10j + x):

df <- data.frame(x=c(0:129)) 
ggplot(df, aes(x=x%%10, y=floor(x/10), shape=factor(x), colour=x, size=10)) + 
    geom_point() + 
    scale_shape_manual(values=df$x) + theme(legend.position='none') + 
    scale_x_continuous(breaks=0:10) + scale_y_continuous(breaks=0:12) + 
    scale_colour_hue() + scale_colour_gradientn(colours=rainbow(3)) 

Shapes available in ggplot2