2013-03-01 2 views
1

그래서 저는 경매에 사용 된 데이터 중 대규모 데이터 세트 (약 400,000 회의 관측)를 확보했습니다. 저는 ggplot을 사용하여 하루 경매 가격을 표시하고 수직선을 사용하여 색상과 월별로 연도를 표시하려고합니다.ggplot2에 수직선을 추가 할 때 오류가 발생했습니다.

firstmonth<- c(1,32,60,91,121,152,182,213,244,274,305,335) 

require(ggplot2) 
p <- ggplot(bb, aes(saledate$yday, SalePrice)) 
p <- p + geom_point(aes(color = factor(saledate$year)), alpha = I(1/30)) #This plot works 
p + geom_vline(aes(xintercept = firstmonth)) 
Error in data.frame(xintercept = c(1, 32, 60, 91, 121, 152, 182, 213, : 
    arguments imply differing number of rows: 12, 401125 

이 오류와 함께 기능 :

은 여기, 내 날짜를 보유하고 POSIXlt 벡터를 내가 함께 일하고 있어요 무엇인가가? 왜 수직선을 얻을 수 없습니까?

답변

6

당신은 geom_vline에 새 data.frame을 통과해야 : 새`data.frame`을 통과하지 않는 경우

library(ggplot2) 

bb <- data.frame(SalePrice=rnorm(1000)) 
saledate <- data.frame(yday=1:1000,year=rep(1:10,each=100)) 

firstmonth<- c(1,32,60,91,121,152,182,213,244,274,305,335) 

p <- ggplot(bb, aes(saledate$yday, SalePrice)) 
p <- p + geom_point(aes(color = factor(saledate$year))) #This plot works 
p + geom_vline(aes(xintercept = firstmonth)) 
#error 
df2 <- data.frame(firstmonth) 
p + geom_vline(data=df2,aes(xintercept = firstmonth)) 
#works 
+0

(+1) 그래서, 기본적으로, 당신의 매핑이 제한됩니다 'x'의 점수는'미학 '을 사용하면 .. 왜 설명 할 수 있겠습니까? 또한 단순히'geom_vline (xintercept = firstmonth)'을'aes'없이 ... ([plot default를 무시하지 않으므로]) (http://docs.ggplot2.org/0.9. 3/geom_vline.html)? – Arun

+0

점의 수에 제한을 두는 것은 다음과 같습니다 :'df <- data.frame (x = 1 : 10, y = 10 : 1)''p <- ggplot (data = df, aes (x = x, 'p + geom_vline (aes (xintercept = 11:25))'이 아닌 곳에서''p + geom_vline (aes (xintercept = 11:20) 티. 'aes (xintercept =.) '가 에이스와 같은 수의 점을 가지고있는 한, 그것은 효과가있는 것처럼 보입니다. – Arun

+0

예, 이건 이상하지만 기괴합니다. 내가 ggplot을 좋아하는만큼, 이런 것들은 내가 그것이 어떻게 작동하는지 완전히 이해하지 못한다고 느끼게한다. 어느 것이 실망 스럽습니다. 하지만 도움을 주셔서 감사합니다. – user1443010

관련 문제