2017-03-01 8 views
0

면 처리 된 상자 그림을 만들었습니다. 이제 플롯에 선을 추가해야합니다. 아래 코드는 내 코드와 함께 표시되지 않았습니다. 친절하게 제게 도움을주세요! 감사!geom_vline이 내 boxplot에서 작동하지 않습니다.

데이터 :

Year |variable |value 
2001 |A   |39.605 
2001 |A   |28.50759 
2001 |A   |24.8132 
2002 |A   |10.70765357 
2002 |A   |7.8676 
2002 |A   |16.05294712 
2003 |A   |19.7847 
2003 |A   |20.21635 
2003 |A   |29.15491667 
2001 |B   |50 
2001 |B   |78 
2001 |B   |90 
2002 |B   |35 
2002 |B   |62 
2002 |B   |82.5 
2003 |B   |49.5 
2003 |B   |60 
2003 |B   |84 

코드 :

pp <- ggplot(dta, aes(x=factor(Year),y=value)) + 
    geom_boxplot() + 
    facet_grid(variable~.,scales="free_y") + 
    theme_bw() 
pp + geom_vline(xintercept = 2002) #The line didn't show. 
pp + geom_vline(xintercept = as.numeric(2002)) #The line didn't show. 
pp + geom_vline(xintercept = which(levels(dta$Year) =="2002")) #The line didn't show. 

답변

0

는, 당신은 aes(x=factor(Year),...을 지정했다

pp + geom_vline(xintercept = which(levels(factor(dta$Year)) =="2002")) 

시도하십시오. levels(dta$Year)Year이 원래 데이터 프레임 dta의 요소가 아니기 때문에 NULL을 반환합니다. 그래서, 당신은 geom_vline()에 호출 factor(dta$Year)을 추가해야합니다 your own answer처럼 특정 요인의 수준을 하드 코딩 반대로 당신이 당신의 입력 데이터를 변경하면이도 작동합니다

levels(factor(dta$Year)) 
#[1] "2001" "2002" "2003" 

참고.

+0

감사합니다. 우웨! 귀하의 대답은 레벨() 기능을 이해하고 미래에 더 잘 사용할 수 있도록 도와줍니다! – Angel

+0

@Angel 도움이 되었기 때문에 기쁩니다. 아마도, 당신은 [this] (http://stackoverflow.com/help/someone-answers)를 고려하고 싶을 것입니다. – Uwe

0

가 알았어요! PP + geom_vline (xintercept = 2) 요인 수준의 정수를 찾을 필요가 있으므로