1

所以,我有一个拍卖数据的大型数据集(大约 400 000 次观察)。我正在尝试使用 ggplot 按天绘制拍卖价格,同时使用垂直线按颜色和月份表示年份。

我有一个 POSIXlt 向量来保存我的日期,这是我正在使用的:

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

这个错误是怎么回事?为什么我不能得到垂直线?

4

1 回答 1

6

您需要将新的 data.frame 传递给geom_vline

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
于 2013-03-01T19:58:23.127 回答