2013-08-05 1 views
22

별도의 geom_line() 인수를 사용하여 추가 한 4 개의 별도 라인이있는 ggplot에 플롯이 있습니다. 전설을 추가하고 싶지만이 경우에는 scale_colour_manual이 작동하지 않습니다. 별도로 변수를 추가 할 때 범례를 추가하는 적절한 방법은 무엇입니까?라인을 수동으로 추가했을 때 ggplot에 범례 추가

ggplot(proba[108:140,], aes(c,four)) + 
    geom_line(linetype=1, size=0.3) + 
    scale_x_continuous(breaks=seq(110,140,5)) + 
    theme_bw() + 
    theme(axis.line = element_line(colour = "black", size=0.25), 
      panel.grid.major = element_blank(), 
      panel.grid.minor = element_blank(), 
      panel.border = element_blank(), 
      panel.background = element_blank()) + 
    theme(axis.text.x = element_text(angle = 0, hjust = +0.5, size=6,color="black")) + 
    theme(axis.text.y = element_text(angle = 0, hjust = -100, size=6, color="black")) + 
    theme(axis.ticks=element_line(colour="black",size=0.25)) + 
    xlab("\nTime-steps") + 
    ylab("Proportion correct\n") + 
    theme(axis.text=element_text(size=8),axis.title=element_text(size=8)) + 
    geom_line(aes(c,three), size=0.2, linetype=2) + 
    geom_line(aes(c,one),linetype=3, size=0.8, colour="darkgrey") + 
    geom_line(aes(c,two), linetype=1, size=0.8, colour="darkgrey") 
+0

코드를 게시 할 수 있습니까? 'aes '호출에서'color = "Line Name"을 설정하면 효과가 있습니다. – Peyton

+0

이미 색상으로 된 인수가 있지만 범례로 표시하지 않습니다. 내 코드를 게시했습니다. – user1723765

+3

'aes' 안에'color' 인자를 넣고 색상 이름으로 설정하지 말고, 범례에 나타나길 원하는 이름으로 설정하십시오. 그런 다음'scale_color_manual'을 사용하여 그 이름을 원하는 색상으로 매핑하십시오. – Peyton

답변

21

그냥 전설에 라인의 이름이 있어야한다 무엇 이건 aes의 색상 이름을 설정 :

여기 내 코드입니다.

library(ggplot2) 

line.data <- data.frame(x=seq(0, 10, length.out=10), y=runif(10, 0, 10)) 

qplot(Sepal.Length, Petal.Length, color=Species, data=iris) + 
    geom_line(aes(x, y, color="My Line"), data=line.data) 

enter image description here

주목해야 할 중요한 것은 당신이 미적를 만드는 것입니다 :

내가 여기에 데이터를 가지고 있지만하지 않는이 iris 임의의 y 값을 가진 행을 사용하여 예제 매핑을 사용하지만 데이터 프레임의 열에 색상을 매핑하는 대신 지정하는 문자열에 매핑합니다. ggplot은 데이터 프레임에서 가져온 값과 마찬가지로 해당 값에 색상을 지정합니다. 당신은 색상을 ggplot2 양수인을 좋아하지 않는 경우

line.data$Species <- "My Line" 
qplot(Sepal.Length, Petal.Length, color=Species, data=iris) + 
    geom_line(aes(x, y), data=line.data) 

어느 쪽이든, 다음 scale_color_manual을 사용하여 자신을 지정할 수 있습니다 : 당신은 데이터 프레임에 Species 열을 추가하여 위와 같은 플롯을 생산 할 수

qplot(Sepal.Length, Petal.Length, color=Species, data=iris) + 
    geom_line(aes(x, y, color="My Line"), data=line.data) + 
    scale_color_manual(values=c("setosa"="blue4", "versicolor"="red4", 
           "virginica"="purple4", "My Line"="gray")) 

enter image description here

또 다른 대안은 직접 선을 레이블, 또는 문맥에서 명백한 라인의 목적을 확인하는 것입니다. 실제로 최상의 옵션은 특정 상황에 따라 다릅니다.

+2

위의 코드에서 첫 번째 aes() 인수에있는 첫 번째 변수에 대해 작동하지만 추가 geom_line()에 대해 – user1723765

+0

작동하지 않습니까? 코드 및 데이터 모두 - 기본적으로 내가 어디에 있는지 볼 수있는 예제? – Peyton