2017-02-06 2 views
1

4 개의 안내선이 필요한 곳에 산란 무늬가 있습니다. 필자는 플롯 스크립트에서 해당 라인을 직접 정의하기 위해 데이터 세트의 변수를 직접 사용하지 않았습니다. (수직선은 x 값의 평균과 중앙값이며 다른 두 줄의 기울기는 1과 0.5입니다.)
줄의 색을 정의하고 올바른 범례 레이블을 얻으려면 어떻게해야합니까? 내 플롯에서 색상과 레이블이 섞여 있습니다.ggplot2 : scale_colour_manual을 사용하여 라벨과 색상을 혼합하십시오.

대답하는 질문은 here (possibly duplicate) 위의 질문과 비슷하지만 완전하지 않다고 생각합니다. 이전의 질문은 scale_colour와 scale_fill_manual의 차이점과 전설을 얻기 위해 aes()를 포함하는 것이 중요하다고 생각합니다. geom_- 호출에서 값을 정의하지 않았고 scale_colour_manual()에서 값과 색상을 분리했기 때문에 제 질문은 범례 레이블과 색상을 혼합하는 것입니다.

내 코드 : 나중에 라인의 이름

library(dplyr) 
df <- iris %>% 
    group_by(Species) %>% 
    do({ 
    mod = lm(Sepal.Length~Petal.Length, data = .) 
    data.frame(Intercept = coef(mod)[1], 
       Slope = coef(mod)[2], 
       SD= summary(mod)$coefficients[2,2]) 
    }) 

meanSlope <- mean(df$Slope) 
medianSlope <- median(df$Slope) 

library(ggplot2) 
ggplot(data=df, aes(x=Slope, y=SD)) + 
    geom_point() + 
    scale_x_continuous(limits = c(0,1.0)) + 
    scale_y_continuous(limits = c(0,1.0))+ 
    geom_abline(aes(intercept = 0, slope = 1, colour="red"), show.legend = TRUE) + 
    geom_abline(aes(intercept = 0, slope = 0.5, colour="blue"), show.legend = TRUE) + 
    geom_vline(aes(xintercept = meanSlope, colour= "green"), show.legend = TRUE) + 
    geom_vline(aes(xintercept= medianSlope, colour= "darkgreen"), show.legend = TRUE) + 
    scale_colour_manual(name="Guide lines", values=c("red", "blue", "green", "darkgreen"), 
         labels=c("1 SD", "0.5 SD", "mean", "median")) 

enter image description here

+0

의 중복 가능성 HTTP ://stackoverflow.com/questions/24063163/how-to-add-manual-colors-for-ag gplot2-geom-smooth-geom-line – akrun

+0

[ggplot2 (geom \ _smooth/geom \ _line)의 수동 색상 추가 방법] (http://stackoverflow.com/questions/24063163/how-to-add - 수동 색상 - - - ggplot2 - 기하학 - 부드러운 기선 - 라인) – Axeman

답변

3

시도 매핑, 다음 설정 색상 :

ggplot(data=df, aes(x=Slope, y=SD)) + 
    geom_point() + 
    scale_x_continuous(limits = c(0, 1.0)) + 
    scale_y_continuous(limits = c(0, 1.0))+ 
    geom_abline(aes(intercept = 0, slope = 1, colour = "1 SD"), show.legend = TRUE) + 
    geom_abline(aes(intercept = 0, slope = 0.5, colour = "0.5 SD"), show.legend = TRUE) + 
    geom_vline(aes(xintercept = meanSlope, colour = "mean"), show.legend = TRUE) + 
    geom_vline(aes(xintercept= medianSlope, colour = "median"), show.legend = TRUE) + 
    scale_colour_manual(name = "Guide lines", 
         values = c('1 SD' = "red", '0.5 SD' = "blue", 
           mean = "green", median = "darkgreen")) 

enter image description here