zhuangwei的个人博客分享 http://blog.sciencenet.cn/u/zhuangwei

博文

USE R 分析数据的好帮手

已有 4349 次阅读 2014-8-16 10:55 |个人分类:R|系统分类:科研笔记| 统计, 画图, ggplot, facet_wrap, 分面

最近一段时间在分析通量数据,有几个思路,蒸散的辐射限制和水分供应限制。一直在围绕着这个思路,用R不断地画图。这个过程中,看到R 统计画图的强大。一个简洁明了的图,就可以作为很好的论点的证明。特意买了一本《ggplot2 数据分析与图形艺术》 画图的书。ggplot2 对数据集有要求的:必须是一个数据框。之前对这个先入的条件不是很适应,总是先得重现构建一个新的data.frame,来满足ggplot画图的需要。看了Hakley Wichham的解释,理解了。“ggplot2对数据集的这种要求是有充分理由的。数据非常重要,我们最好明确对数据做了怎样的处理。ggplot2 会从我们给定的数据框中提取绘图所需要的变量,并生成一个新的数据集,而不是直接在数据集上进行数据变换。”这样原先的数据集就得到了保护。


ggplot2

关于本书详见豆瓣评价 http://book.douban.com/subject/24527091/


附上我昨天用ggplot2 画的图、代码和所需数据。比起R 基本的画图函数plot,ggplot2 的画图语法很简洁,输出也很方便。


gpp.site.RData



#以下为R code-----

Sd_GPP_day_6_one_web.R

# 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()














https://blog.sciencenet.cn/blog-526092-819933.html

上一篇:有关生理生态、农林气象、小气候、环境物理的网站和资料
下一篇:写中期的感悟:清晰方向,实现构想,讨论提升
收藏 IP: 159.226.111.*| 热度|

1 谢龙

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...
扫一扫,分享此博文

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-11-23 22:49

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部