2016-06-01 17 views
5

Mit ggplot 's geom_pointrange() Funktion, wie ändere ich die Größe des Punktes und die Dicke der Linie getrennt?Getrennte Größen für Punkte und Linien in geom_pointrange von ggplot

Beispiel:

# make test data 
df <- data.frame(y=10, ymin=1, ymax=20, x=1) 

# store ggplot object 
p <- ggplot(data=df, aes(y=y, ymin=ymin, ymax=ymax, x=x)) 

# plot 1: big dot and thick line 
p + geom_pointrange(fill='blue', color='grey', shape=21, size=5) 

# plot 2: small dot and thin line (I want small dot and thick line or vice versa) 
p + geom_pointrange(fill='blue', color='grey', shape=21, lwd=1, size=5) 

Plot 1:

enter image description here

Plot 2:

enter image description here

Kann ich einen kleinen Punkt mit einer dicken Linie erhalten (oder vice -versa)?

Eine Problemumgehung könnte sein, die Linie und den Punkt als separate geoms mit geom_point und geom_errorbar zu plotten. Leider beinhaltet meine reale Anwendung Jittering, so dass der Punkt und das Intervall an verschiedenen Stellen enden (außer vielleicht kann ich das Zittern kontrollieren?).

Ich kann ähnliche Fragen zu SO (like this) finden, aber sie beantworten nicht direkt diesen.

Danke!

Antwort

8

Sie können fatten in Kombination mit size verwenden:

p + geom_pointrange(fill='blue', color='grey', shape=21, fatten = 20, size = 5) 

enter image description here

p + geom_pointrange(fill='blue', color='grey', shape=21, fatten = .5, size = 5) 

enter image description here

s. ?geom_pointrange:

fatten
A multiplikativen Faktor, der die Größe des Mittelsteg in geom_crossbar() und dem Mittelpunkt in geom_pointrange zu erhöhen verwendet().

+0

Interessanterweise scheint 'fetten' in Windows zu funktionieren, aber nicht in meiner Unix-Umgebung. Irgendwelche Gedanken? – dmp

+0

Ich habe versucht auf einem Mac, keine Ahnung, was das Problem sein könnte, vielleicht müssen Ihre R und ggplot2-Version aktualisiert werden? – beetroot

Verwandte Themen