ggplot2绘制科研数据柱状图~

2022-03-29 09:34:40 浏览数 (1)

导语

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自己想要的柱状图吧!

0 人点赞