本文针对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分组分组。
误差棒的语法一般要先写,否则会遮盖其他更重要的元素如点、线。
六、总结
劝退。
「ggplot2中柱状图基本绘制函数常用geom_bar()」
「data和mapping是ggplot的基本参数,数据和映射。」 mapping:使用aes函数指定,为aesthetic attributes的缩写。但字符串映射使用aes_string。aes:颜色(color颜色或边框颜色、fill填充颜色和 alpha透明度) 形状(linetype线型、size点的大小或线的宽度和 shape形状) 位置 (x, y, xmin, xmax, ymin, ymax, xend, yend) 指定数据分组和顺序的映射group和order,另一类是字符串映射。
一张统计图就是从数据到几何对象(点、线、条形等)的图形属性(颜色、形状、大小等)的一个映射。
「stat:」 设置统计方法,有效值是count(默认值) 和 identity,其中,count表示条形的高度是变量的数量,不能设定y值。identity表示条形的高度是变量的值;对于连续性变量使用bin,转换的结果使用变量density来表示。
「position:」 位置调整,有效值是stack、dodge和fill,默认值是stack(堆叠),是指两个条形图堆叠摆放,dodge是指两个条形图并行摆放,fill是指按照比例来堆叠条形图,每个条形图的高度都相等,但是高度表示的数量是不尽相同的。
「width:」 条形图的宽度,是个比值,默认值是0.9
「color:」 条形图的线条颜色
「fill:」 条形图的填充色
<figcaption style="margin: 5px 0px 0pxpadding: 0pxmax-width: 100%box-sizing: border-box !importantoverflow-wrap: break-word !importanttext-align: centerfont-size: 13pxcolor: rgb(43, 43, 43)"></figcaption>
在ggplot2中可以直接结合stat_summary函数快速进行数据统计->链接
所以stat可以设置为summary,将柱状图的高度设置为各组的均值并联合stat_summary函数增加误差线。
使用stat_compare_means()函数。
要放假了,简单学习一下就好,大家好好休息,生活很好,等你超越~~~
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)