导语
GUIDE ╲
ggplot2是一个神奇的R包,可以可视化各种各样的统计数据。
背景介绍
ggplot2是一个神奇的R包,可以将自己的统计数据绘制成想要的图案。从今天起小编计划为各位观众老爷们带来一个ggplot2的系列教程。那么首先呢,大家在可视化自己的科研数据时,最最最常用的就是绘制一个带误差或者显著值的柱状图。
R包展示
01
R包载入
tidyverse是一个数据处理的R包的集合,包括ggplot2 (可视化数据) ,dplyr(处理数据),tidyr(清理数据),readr(读取数据),stringr (处理字符串)等等好多个常用的R包。我们直接安装tidyverse即可。
代码语言:javascript复制install.packages("tidyverse")
library(tidyverse)
02
最最基础的柱状图
我们首先随机生成一个用来画柱状图的数据框,这里小编以一个正态分布数据为例,用ggplot画一个五彩斑斓的柱状图。
代码语言:javascript复制#随机生成正态分布的数据框
num<-rnorm(5,mean=3,sd=1)
group<-c('A','B','C,','D','E')
frame<-data.frame(group,num)
#ggplot绘制柱状图
ggplot(frame,aes(group,num,fill=group)) geom_col()
03
修改一些参数
我们发现柱状图有一丢丢粗糙,那就修改一下高度宽度,加上误差线、每组的数字或显著值。参数有geom_errorbar误差线,geom_errorbarh水平误差线,geom_point 点,geom_pointrange垂直线,geom_text文本等。
代码语言:javascript复制num<-rnorm(5,mean=3,sd=1)
num<-round(num,2)
group<-c('A','B','C,','D','E')
frame<-data.frame(group,num)
mean=3
sd=1
#绘制柱状图
ggplot(frame,aes(group,num,fill=group))
geom_col()
#加误差线
geom_errorbar(aes(group,
ymin=mean-sd,
ymax=mean sd,
color=group),width=0.6,size=1)
#改坐标名
xlab("Group") ylab("OR")
#在柱状图上加数字
geom_text(aes(label=num, vjust = -0.9, hjust = 0.4, color = group), show.legend = TRUE)
给每个柱子加标签和加加文字/数字类似。
代码语言:javascript复制ggplot(frame,aes(group,num,fill=group))
geom_col()
geom_errorbar(aes(group,
ymin=mean-sd,
ymax=mean sd,
color=group),width=0.6,size=1)
xlab("Group") ylab("OR")
theme(legend.position ="none",
axis.title = element_text(size=15),
axis.text = element_text(size=15))
annotate("text",x=1,y=4.15,label="*",size=10)
annotate("text",x=2,y=4.15,label="**",size=10)
annotate("text",x=3,y=4.15,label="***",size=10)
annotate("text",x=4,y=4.15,label="*",size=10)
annotate("text",x=5,y=4.15,label="**",size=10)
04
叠加柱状图
有时候我们的数据是多维的,这时就需要叠加柱状图(叠加/分组/比例)。由于数据比较复杂不方便自己创建,我们这里使用ggplot2自带的汽车数据集mpg为例绘制叠加柱状图。
如果我们直接绘制原始数据的柱状图,显示的是每种汽车种类及其个数。
代码语言:javascript复制ggplot(mpg,aes(x=class)) geom_bar()
但是如果绘制堆叠图,就可以把多维度数据融合进来,例如汽车的年份(year),手动档还是自动档(trans)等。
代码语言:javascript复制ggplot(mpg,aes(x=class)) geom_bar(aes(fill=factor(year)),position="stack")
代码语言:javascript复制ggplot(mpg,aes(x=class)) geom_bar(aes(fill=factor(trans)),position="stack")
叠放方式还可以换成分组并排放置。
代码语言:javascript复制ggplot(mpg,aes(x=class)) geom_bar(aes(fill=factor(year)),position="dodge")
小编总结
大家快来DIY自己想要的柱状图吧!