2016-03-22 11 views
4

Ich versuche, eine Handlung zu steuern ggplot2ggplot Linienstärke in der Legende reduzieren

Beispielskript verwenden:

dat1 <- data.frame(
    sex = factor(c("Female","Female","Male","Male")), 
    time = factor(c("Lunch","Dinner","Lunch","Dinner"), levels=c("Lunch","Dinner")), 
    total_bill = c(13.53, 16.81, 16.24, 17.42) 
) 
p = ggplot(data=dat1, aes(x=sex, y=total_bill, group=time, shape=time, color=time)) + geom_line() + geom_point() 

Jetzt will ich steuern, wie die Form und die Linie wie in der Legende aussehen. Ich möchte eine größere Form und dünne Linie in der Legende. Aber ich kann beides nicht durchführen.

Wenn ich das tue,

p = p + guides(colour = guide_legend(override.aes = list(size=5))) 

Beide Linie und Form sind dick, ähnlich Fig B.

Wenn ich das tue,

p = p + guides(colour = guide_legend(override.aes = list(size=5,linetype=0))) 

Dann Formen auf richtige Größe erscheinen, aber Linie verschwindet (Abb. A). Ich habe so etwas erfolglos versucht.

p = p + guides(colour = guide_legend(override.aes = list(size=5,linetype=0.5))) 

Example

Wie eine große Form und dünne Linie in der Legende zu erreichen?

+1

Soweit ich weiß, nicht mit regulären ggplot2-Befehlen. Aber have a [siehe hier] (http://stackoverflow.com/questions/25007324/can-ggplot2-control-point-size-and-line-size-lineweight-separately-in-one-lege/34304453#34304453) . –

+2

Bit eines Hacks, aber ... fügen Sie einen zusätzlichen geom_point hinzu und optimieren Sie den Alpha ... 'geom_point (Größe = 5, alpha = 0) + geom_point (show.legend = FALSE) + Hilfslinien (color = guide_legend (override. aes = Liste (alpha = 1))) ' – user20650

Antwort

4

Danke Sandy Muspratt und user20650. Die Verbindung war sehr nützlich.

Ich ging mit dem Code von user20650 nur für die Einfachheit.

komplette Code hier:

dat1 <- data.frame(
    sex = factor(c("Female","Female","Male","Male")), 
    time = factor(c("Lunch","Dinner","Lunch","Dinner"), levels=c("Lunch","Dinner")), 
    total_bill = c(13.53, 16.81, 16.24, 17.42) 
) 
p = ggplot(data=dat1, aes(x=sex, y=total_bill, group=time, shape=time, color=time)) 
p = p + geom_line() + geom_point(size=5, alpha=0) + geom_point(show.legend=FALSE) 
p = p + guides(colour = guide_legend(override.aes = list(alpha=1))) 

Dank.

Verwandte Themen