2017-05-15 1 views
0

내 문제에 대한 답변을 찾으려고했지만 포럼에서 찾은 내용으로 해결할 수 없었습니다. 나는 그것이 바로 매핑을 할 수있는 키를 알고있다. (또는 적어도 이전의 msgs에서 이해할 수있는 것이다.) 여기 ggplot2 범례 추가하기

내 코드입니다 :

dat <- data.frame(
    Individuals = c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10), 
    Year = c(0, 5, 0, 0, 0, 0, 8, 0, 0, 3), 
    end = c(15, 10, 15, 6, 10, 8, 15, 6, 9, 5)) 

    Person_time_R <- ggplot(dat) + 
    geom_segment(aes(x=Year, y=Individuals, xend=end, yend=Individuals), 
       color=c("blue","red","red","blue","red","red","blue","red","red","red"), 
    size=2) + 
    scale_y_reverse() + 
    ggtitle("Person-time") + 
    xlab("Years") + 
    ylab("Individuals") + 
    theme(
    plot.title = element_text(hjust = 0.5, size=26, face="bold"), 
    axis.title.x = element_text(size=20), 
    axis.title.y = element_text(size=20) 
    ) + 
    scale_y_discrete(limits=c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)) + 
    scale_x_continuous(limits = c(0,16)) + 
    scale_x_discrete(limits=c(0, 1, 3, 5, 7, 9, 11, 13, 15)) 

내가 그렇게 할 수있는 방법 ...은 "레드"와 "블루"라인을 분리 전설을 가지고 싶다?

+0

'빨간색'과 '파란색'은 무엇을 의미합니까? – www

+0

@ycw'blue'와'red'는 조사 된 두 가지 유형의 두 가지 유형의 관찰을 표시합니다. 'Individuals = c (1, 2, 3, 4, 5, 6, 7, 8, 9, 10)' 다음과 같이 그룹화 할 수 있습니다 :'c (1,2,2,1,2,2, 1,2,2,2)' 충분히 명확하지 않은지 잘 모르겠다./= – Bram

+1

열의 데이터 프레임에 색칠 할 데이터를 추가합니다. 예를 들어'observation_type'이라고합니다. 그런 다음'aes()'에'color = observation_type'을 추가하십시오. 그러면 범례가 자동으로 만들어집니다. – Gregor

답변

1

색상을 범례로 표시하려면 유형을 나타내는 열을 추가 한 다음 aes에 매핑 된 geom_segment을 입력하면됩니다. 마지막으로 scale_color_manual을 사용하여 이름과 색상을 지정하십시오.

dat$Type <- c(1, 2, 2, 1, 2, 2, 1, 2, 2, 2) 

ggplot(dat) + 
    geom_segment(aes(x=Year, y=Individuals, xend=end, yend=Individuals, colour = factor(Type)), 
       size = 2) + 
    scale_color_manual(values = c("blue", "red"), name = "Type") 
+1

ycw의 답변을 완성하려면 데이터 프레임의 각 "유형"의 실제 이름을 사용하는 것이 좋습니다 (그리고 이상적으로 그것을 분해). 그러면 범례에 직접 표시됩니다. 예 :'dat $ type-type (typeA, typeB, typeB, typeB, typeB, typeB, typeB, typeB, typeB, typeB, typeB) –