【R语言科研绘图】--- 柱状图

R语言科研绘图——柱状图


前言

使用R语言绘制能够发表的图片,ggplot2是一个很好的选择。并且一些基于ggplot2开发的包,能够达到这个目标。graphpad prism做出来的图深得大家喜爱,因此本系列的文章就利用R语言ggprism这个包进绘制


ggplot2

一、柱状图

柱状图在绘图中经常使用到,例如PCR的数据结果,绘制过程如下

二、使用工具

1.所使用的包

为了科研绘图的美观,所以使用了ggprism这个包的绘制,能够绘制出和graphpad prism类似的效果,便于放在论文中发表

2.数据特征

使用的是R自带的ToothGrowth数据,包含了三个数据
len是指牙生长的长度
supp factor指的是给予的干扰因素,其中包括了VC和橘子汁
dose 指的是给予干扰因素的剂量

3.绘图

3.1 两组均值之间的比较

先把柱状图画出来

在这里插入图片描述
代码如下:

df_p_val <- rstatix::t_test(ToothGrowth, len ~ supp) %>% 
  rstatix::add_x_position()

p <- ggplot(ToothGrowth, aes(x = factor(supp), y = len)) + 
  stat_summary(geom = "col", fun = mean) + 
  stat_summary(geom = "errorbar", 
               fun = mean,
               fun.min = function(x) mean(x) - sd(x),
               fun.max = function(x) mean(x) + sd(x),
               width = 0.3) + 
  theme_prism() + 
  coord_cartesian(ylim = c(0, 35)) + 
  scale_y_continuous(breaks = seq(0, 35, 5), expand = c(0, 0))

加上统计结果
这里使用rstatix这个包里面的函数进行计算。

rstatix这个包的特点是能够和tidyverse类似,能够使用管道符进行计算,便于和tidyverse进行对接

在这里插入图片描述
代码如下:

df_p_val <- rstatix::t_test(ToothGrowth, len ~ supp) %>% 
  rstatix::add_x_position()
p + add_pvalue(df_p_val, y.position = 30)

缺少颜色,加上颜色

在这里插入图片描述

p <- ggplot(ToothGrowth, 
            aes(x = factor(supp), y = len)
            ) + 
  stat_summary(geom = "col", aes(fill = factor(supp)),fun = mean) + 
  stat_summary(geom = "errorbar", colour = 'red',
               fun = mean,
               fun.min = function(x) mean(x) - sd(x),
               fun.max = function(x) mean(x) + sd(x),
               width = 0.3) + 
  theme_prism() + 
  coord_cartesian(ylim = c(0, 35)) + 
  scale_y_continuous(breaks = seq(0, 35, 5), expand = c(0, 0))

p

p+ add_pvalue(df_p_val, y.position = 30)

需要注意的是,在添加颜色的时候,是在stat_summary当中添加aes(fill = factor(supp),如果添加到ggplot函数中,后面的统计结果又加不上去。

去除图例
因为图片的下方已经有了内容,反而图例显得多余,所以就去除掉图例。使用的是ggplot2绘制,因此按如下方法即可:

在这里插入图片描述

p + theme(legend.position = 'none')+
  add_pvalue(df_p_val, y.position = 30)

3.2 多组均值之间的比较

依然使用ToothGrowth 这个数据,比较不同的剂量之间生长的差异。总共有三组不同的剂量,这属于多组比较,这就需要确定一个比照的参照系。

单纯的出图,是这个样子
在这里插入图片描述
代码如下:

p <- ToothGrowth %>% 
  ggplot(aes(x = factor(dose), y = len)) + 
  stat_summary(geom = "col", fun = mean) + 
  stat_summary(geom = "errorbar", 
               fun = mean,
               fun.min = function(x) mean(x) - sd(x),
               fun.max = function(x) mean(x) + sd(x),
               width = 0.3) + 
  
  theme_prism() + 
  coord_cartesian(ylim = c(0, 40)) + 
  scale_y_continuous(breaks = seq(0, 40, 5), expand = c(0, 0))
p

加上统计数据,两种方式
在这里插入图片描述
代码如下

df_p_val <- 
  rstatix::t_test(ToothGrowth, len ~ dose, ref.group = "0.5") %>% 
  rstatix::add_xy_position()

p1 <- p + add_pvalue(df_p_val, label = "p.adj.signif")
p2 <- p + add_pvalue(df_p_val, label = "p.adj.signif", remove.bracket = TRUE)  

颜色太单一,更换颜色
在这里插入图片描述
代码如下:

p <- ToothGrowth %>% 
  ggplot(aes(x = factor(dose), y = len)) + 
  stat_summary(geom = "col", fun = mean,aes(fill = factor(dose))) + 
  stat_summary(geom = "errorbar", 
               fun = mean,
               fun.min = function(x) mean(x) - sd(x),
               fun.max = function(x) mean(x) + sd(x),
               width = 0.3) + 
  
  theme_prism() + 
  coord_cartesian(ylim = c(0, 40)) + 
  scale_y_continuous(breaks = seq(0, 40, 5), expand = c(0, 0))
p + theme(legend.position = 'none')

加上统计数据
在这里插入图片描述

df_p_val <- rstatix::t_test(ToothGrowth, len ~ dose, ref.group = "0.5") %>% 
  rstatix::add_xy_position()
  p <- ToothGrowth %>% 
  ggplot(aes(x = factor(dose), y = len)) + 
  stat_summary(geom = "col", fun = mean,aes(fill = factor(dose))) + 
  stat_summary(geom = "errorbar", 
               fun = mean,
               fun.min = function(x) mean(x) - sd(x),
               fun.max = function(x) mean(x) + sd(x),
               width = 0.3) + 
  
  theme_prism() + 
  coord_cartesian(ylim = c(0, 40)) + 
  scale_y_continuous(breaks = seq(0, 40, 5), expand = c(0, 0))
  
p1 <- p +theme(legend.position = 'none') + add_pvalue(df_p_val, label = "p.adj.signif")


p2 <- p+theme(legend.position = 'none')  + add_pvalue(df_p_val, label = "p.adj.signif", remove.bracket = TRUE)

后记

以上是使用R进行绘制柱状图并且加上统计分析的过程,其中一些细节改变图例更换颜色导出图片改变坐标轴 等等没有细致说明,可以进行细微调节。另外,统计分析使用了rstatix这个包,能够和tidyverse很好的结合,后续专门对统计分析进行梳理

  • 8
    点赞
  • 49
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

生信小鹏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值