使用ggplot2绘制具有不同长度的data.frames时出错

时间:2017-03-17 13:00:12

标签: r dataframe ggplot2

我正在尝试使用ggplot2使用以下代码绘制两个不同长度的data.frame:

require(ggplot2)

shortda <- data.frame(SST=seq(1:30),chla=rlnorm(30),year=rep(2001:2010,each=3))
longda  <- data.frame(SST=seq(1:300),pred=rlnorm(300))

ggplot(shortda, aes(x=SST, y=chla, colour=year))+ geom_point()

ggplot(shortda, aes(x=SST, y=chla, colour=year))+ geom_point() + geom_line(data=longda,aes(SST,pred))

第一个带有一个data.frame的图表运行良好,但第二个给出错误:

Error in eval(expr, envir, enclos) : object 'year' not found

我做错了什么?

我的sessinInfo是

sessionInfo()
R version 3.3.3 (2017-03-06)
Platform: x86_64-pc-linux-gnu (64-bit)
Running under: Ubuntu 14.04.5 LTS

locale:
  [1] LC_CTYPE=en_US.UTF-8       LC_NUMERIC=C               LC_TIME=es_AR.UTF-8       
[4] LC_COLLATE=en_US.UTF-8     LC_MONETARY=es_AR.UTF-8    LC_MESSAGES=en_US.UTF-8   
[7] LC_PAPER=es_AR.UTF-8       LC_NAME=C                  LC_ADDRESS=C              
[10] LC_TELEPHONE=C             LC_MEASUREMENT=es_AR.UTF-8 LC_IDENTIFICATION=C       

attached base packages:
  [1] stats     graphics  grDevices datasets  utils     methods   base     

other attached packages:
  [1] ggplot2_2.1.0

loaded via a namespace (and not attached):
  [1] labeling_0.3     colorspace_1.2-6 scales_0.4.1     plyr_1.8.3       tools_3.3.3      gtable_0.2.0    
[7] Rcpp_0.12.4      grid_3.3.3       digest_0.6.9     munsell_0.4.3   

2 个答案:

答案 0 :(得分:1)

您无法在ggplot语句中添加任何数据。这样的事情能给你带来理想的结果吗?

ggplot()+ geom_point(data=shortda, aes(x=SST, y=chla, colour=year)) + 
          geom_line(data=longda,aes(SST,pred))

enter image description here

答案 1 :(得分:1)

ggplot希望按year为您的行着色,但无法在longda中找到它。

您可以使用例如:

geom_line(aes(y = pred), longda, col = 1)

geom_line(aes(y = pred, col = NULL), longda)

表示您的颜色映射不应该适用于这些行。