|||
最近一段时间在分析通量数据,有几个思路,蒸散的辐射限制和水分供应限制。一直在围绕着这个思路,用R不断地画图。这个过程中,看到R 统计画图的强大。一个简洁明了的图,就可以作为很好的论点的证明。特意买了一本《ggplot2 数据分析与图形艺术》 画图的书。ggplot2 对数据集有要求的:必须是一个数据框。之前对这个先入的条件不是很适应,总是先得重现构建一个新的data.frame,来满足ggplot画图的需要。看了Hakley Wichham的解释,理解了。“ggplot2对数据集的这种要求是有充分理由的。数据非常重要,我们最好明确对数据做了怎样的处理。ggplot2 会从我们给定的数据框中提取绘图所需要的变量,并生成一个新的数据集,而不是直接在数据集上进行数据变换。”这样原先的数据集就得到了保护。
关于本书详见豆瓣评价 http://book.douban.com/subject/24527091/
附上我昨天用ggplot2 画的图、代码和所需数据。比起R 基本的画图函数plot,ggplot2 的画图语法很简洁,输出也很方便。
#以下为R code-----
# you can skip the above step and load data directly from gpp.site.RData-----
load('gpp.site.RData')
GPP6sub <- GPP.site$data
# ggplot -------
# 六个站点全部在一张图上
scatter.ggplot <- ggplot(aes(x = Sd , y = GPP, colour=Season),
data = GPP6sub)+
geom_point() +
scale_colour_manual(values = c('grey','black'))
# facet_wrap可以把六个站点分别画出来
g.site <- scatter.ggplot +
facet_wrap(~Site_f) +
theme_bw()
# geom_smooth 加入平滑线
GPP.site <- g.site +
geom_smooth(method='lm')
# xlab, ylab 设置
GPP.site <- GPP.site +
xlab(expression(paste('Sd (MJ m'^'-2',' day'^'-1',')'))) +
ylab(expression(paste('GPP', ' (g C m'^'-2','day'^'-1',')')))
# 把图片作为一个对象保存起来,画图所需的数据集也保存了,方便后面发表时再修改
#save(GPP.site,file='E:/data/report/gpp.site.RData')
save(GPP.site,file='gpp.site.RData')
pdf('Sd_GPP_6_one.pdf',width=8,height=6)
print(GPP.site)
dev.off()
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-11-23 22:49
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社