我正在尝试使用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
答案 0 :(得分:1)
您无法在ggplot
语句中添加任何数据。这样的事情能给你带来理想的结果吗?
ggplot()+ geom_point(data=shortda, aes(x=SST, y=chla, colour=year)) +
geom_line(data=longda,aes(SST,pred))
答案 1 :(得分:1)
ggplot
希望按year
为您的行着色,但无法在longda
中找到它。
您可以使用例如:
geom_line(aes(y = pred), longda, col = 1)
或
geom_line(aes(y = pred, col = NULL), longda)
表示您的颜色映射不应该适用于这些行。