2014-09-17 4 views
0

나는 ggplot이 내가 기대했던 것과 다른 방식으로 수직선에 색상을 지정한다는 것을 알게되었습니다.잘못된 색상 할당

ggplot(x, aes(x = wages)) + 
    geom_density(alpha=.4, colour = "darkgrey", fill = "darkgrey") + 
    geom_vline(data = x, aes(xintercept = mean(x$wages), colour = "green"), 
      linetype = 1, size = 0.5)+ 
    geom_vline(data = x, aes(xintercept = median(x$wages), colour = "blue"), 
      linetype = 1, size = 0.5) + 
    geom_vline(data = x, aes(xintercept = mean(x$wages)+1*sd(x$wages), colour = "red"), 
      linetype = 1, size = 0.5)+ 
    xlim(c(0,3)) 

enter code here

그래프가 다르게 보이는 것은, 그러나 하나 개의 결과가 유지됩니다 : 수직 라인의 색상을 지정 분포를 그리기

wages <- rnorm(100, 0.9, 0.5) 
ids <- as.factor(round(rnorm(100, 1342, 98))) 
x <- data.frame(ids, wages) 

, 상기 데이터 프레임을 생성

same : 중앙값과 평균 + 1dd 선 색상이 전환됩니다. 누구든지이 문제를 해결하는 방법을 알고 있습니까? 감사합니다

+4

'color ='는 변수에 매핑되지 않은 경우'aes()'외부에 있어야합니다. –

+0

@DidzisElferts 대단히 감사합니다. 그것은 효과가 있었다. – saju

+0

@DidzisElferts 답변으로 추가 할 수 있습니까? –

답변

2

이름으로 색을 제공하고 변수에 매핑하지 않으므로 colour=aes() 외부에 배치해야합니다.

ggplot(x, aes(x = wages)) + 
    geom_density(alpha=.4, colour = "darkgrey", fill = "darkgrey") + 
    geom_vline(data = x, aes(xintercept = mean(x$wages)),colour = "green", 
      linetype = 1, size = 0.5)+ 
    geom_vline(data = x, aes(xintercept = median(x$wages)),colour = "blue", 
      linetype = 1, size = 0.5) + 
    geom_vline(data = x, aes(xintercept = mean(x$wages)+1*sd(x$wages)),colour = "red", 
      linetype = 1, size = 0.5)+ 
    xlim(c(0,3)) 
+0

솔루션에 다시 한번 감사드립니다. 나는 중복 된 질문의 존재에 대한 연구를했지만, 나는 찾을 수 없었다. – saju