R语言:ggplot误差棒添加

参考自《R Graphics Cookbook》

本文针对ggplot2添加误差棒的一种方法:使用geom_errorbar()语法

library(ggplot2)

library(gcookbook)

library(dplyr)

一、柱形图加误差棒

#筛选部分数据来作图

ce_mod <- cabbage_exp %>%

filter(Cultivar == "c39")

ce_mod

#制图

ggplot(ce_mod, aes(x = Date, y = Weight)) +

geom_col(fill = "white", colour = "black") +

geom_errorbar(aes(ymin = Weight - se, ymax = Weight + se),

width = 0.2)

二、折线图加误差棒

#制图

ggplot(ce_mod, aes(x = Date, y = Weight )) +

geom_line(aes(group = 1)) +

geom_point(size = 4) +

geom_errorbar(aes(ymin = Weight - se, ymax = Weight + se),

width = 0.2)

三、对于分组的柱形图加误差线:

分组数据添加误差线与分组的柱形图的原理相同,都需告知ggplot2其组内成员的位置为分开并列排放的,否则为上下堆砌样式;即position = "dodge"

3、1 对分组柱形图 不 添加position = "dodge"的误差棒效果:上下堆砌的

#制图

ggplot(cabbage_exp, aes(x = Date, y = Weight, fill = Cultivar)) +

geom_col(position = "dodge") +

geom_errorbar(aes(ymin = Weight - se, ymax = Weight + se),

width = .2, size =2)

3.2 对分组柱形图添加position = "dodge"的误差棒效果:组内左右排列的

#制图

ggplot(cabbage_exp, aes(x = Date, y = Weight, fill = Cultivar)) +

geom_col(position = "dodge") +

geom_errorbar(aes(ymin = Weight - se, ymax = Weight + se),

position = "dodge", width = .2, size =2)

#可以发现组内的误差棒不再堆砌,而是两个左右组成一组,同时其顶端各自的宽度都变短了(应该是两个加起来的width是原来的一个)

3.3

问题来了,上图的误差棒虽然左右分组了,但是默认贴在一起的,那么此时要让误差棒组内并列的dodge参数与柱形图组内的一致;

柱形图的dodge默认是0.9, 因此二者须一致,误差棒才能显示在柱形图的中间位置

ggplot(cabbage_exp, aes(x = Date, y = Weight, fill = Cultivar)) +

geom_col(position = "dodge") +

geom_errorbar(aes(ymin = Weight - se, ymax = Weight + se),

position = position_dodge(0.9), width = .2)

#注意:position = "dodge"是position = position_dodge()的简写,但若要涉及到调整具体参数则必须全写

四、对于分组的折线图加误差棒:

而对于分组的折线图来说,往往是形成n条折线,而实际上这些折线通常在x轴上可以算作是堆积的;

因此也可以通过position_dodge语言设置其组内的位置是否分开

4.1 通常是组内不分开的,即堆积的,也就是dodge为0

#首先设置一个整体的dodge值,应用到点、线、误差棒,三者要一致

pd <- position_dodge(0)

#制图

ggplot(cabbage_exp, aes(x = Date, y = Weight,

#注意设置group告知分组

colour = Cultivar, group = Cultivar)) +

geom_errorbar(aes(ymin = Weight - se, ymax = Weight + se),

width = 0.2, size = 1,

colour = "black", position = pd) +

geom_line(position = pd, size = 1) +

geom_point(position = pd, size = 4)

4.2 左右分开的,即dodge为不为0,值越大,组内元素的距离会越远

pd <- position_dodge(0.5)

#制图

ggplot(cabbage_exp, aes(x = Date, y = Weight,

colour = Cultivar, group = Cultivar)) +

geom_errorbar(aes(ymin = Weight - se, ymax = Weight + se),

width = 0.2, size = 1,

colour = "black", position = pd) +

geom_line(position = pd, size = 1) +

geom_point(position = pd, size = 4)

五、注意

离散型变量被映射到colour和fill的图形属性时(如柱形图),此变量默认即为分组变量;但在误差线的例子中需要用group语法手动告知ggplot2分组分组。

误差棒的语法一般要先写,否则会遮盖其他更重要的元素如点、线。

六、总结

劝退。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 作者:严涛浙江大学作物遗传育种在读研究生(生物信息学方向)伪码农,R语言爱好者,爱开源 ggplot2学习笔记之图...
    Dylan的迪阅读 2,728评论 0 6
  • 简介 文章较长,点击直达我的博客,浏览效果更好。本文内容基本是来源于STHDA,这是一份十分详细的ggplot2使...
    taoyan阅读 51,504评论 7 159
  • 写在前面 ggplot2 是一个功能强大且灵活的R包 ,由Hadley Wickham 编写,其用于生成优雅的图...
    Boer223阅读 28,359评论 0 67
  • 导读 以模拟数据为案例,总结ggplot柱形图绘图参数。内容如下方目录所示,一共包含1-9个部分。 目录:一 输入...
    胡童远阅读 12,783评论 2 20
  • Y叔ggplot2教程[https://mp.weixin.qq.com/s/oLgpTGdQgcka-OD757...
    wo_monic阅读 3,365评论 0 1