2015-07-24 11 views
8

Tworzę bardzo prosty wykres, który grupuje dane i używa zmiennej grupującej do określenia stylu i koloru. Nadpisuję te, używając "scale_linetype_manaul" i "scale_colour_manual". Do tej pory tak dobrze, ale kiedy próbuję zmodyfikować etykiety legendy lub jej tytuł, legenda dzieli się na dwie części: jedną dla rodzaju linii i drugą dla koloru. Chcę tylko jednej legendy, ale z własnymi etykietami i tytułem.Pojedyncza legenda podczas korzystania z grupy, rodzaju linii i koloru w ggplot2?

Po this question, upewniłem się, że oba obiekty skalowania są takie same, ale wydaje się, że to nie pomaga.

minimalna przykład:

X <- data.frame(TPP=factor(c(1,5,10,1,5,10,1,5,10)), 
       value=c(-0.035819, 0.003356, 0.066091, -0.028039, 0.004333, 0.060292, -0.023115, 0.005661, 0.058821), 
       horizon=c(1,1,1,2,2,2,3,3,3)) 
ggplot(X, aes(x=horizon, y=value, group=TPP, col=TPP, linetype=TPP))+ 
    geom_line(size=1)+ 
    scale_linetype_manual(name="X", values = c("solid","dashed", "dotted")) + 
    scale_color_manual(name="X", values = c("black", "red", "blue"), labels=c("Low", "5","High")) 

Daje to następujące figure dwie legendy. Jak mogę ponownie połączyć te legendy z niestandardowymi etykietami i tytułem?

+0

Czy chcesz usunąć niechcianą legendę, np. Używając 'guide =" none "' wewnątrz któregokolwiek/obu wywołań 'scale _...()'? – tospig

Odpowiedz

12

To może pomóc:

ggplot(X, aes(x=horizon, y=value, group=TPP, col=TPP, linetype=TPP))+geom_line(size=1)+ 
    scale_linetype_manual(name="X", values = c("solid","dashed", "dotted"),labels=c("Low", "5","High")) + 
    scale_color_manual(name ="X", values = c("black", "red", "blue"),labels=c("Low", "5","High")) 

enter image description here

Jeśli etykiety określone w scale_color_manual aw scale_linetype_manual są różne, albo jeżeli są określone tylko w jednym z nich, można uzyskać dwie różne legendy.

+0

Dzięki, nie zdawałem sobie sprawy, że trzeba powielić etykiety, aby uniknąć powielania legendy. – Thijs

Powiązane problemy