前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ggplot2绘制科研数据柱状图~

ggplot2绘制科研数据柱状图~

作者头像
作图丫
发布2022-03-29 09:34:40
2.4K0
发布2022-03-29 09:34:40
举报
文章被收录于专栏:作图丫

导语

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

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-01-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作图丫 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档