利用ggpubr+ggplot2做barplot和boxplot

作者: Dayueban | 来源:发表于2019-02-28 14:13 被阅读114次
ggpubr作图

导读

以前总是借助PS来为新鲜出炉的R图添加统计显著标识,但是现在可以不用了,因为ggbubr可以一站式解决,而且画的图堪比SCI级别。话不多说,撸起袖子搞起来

工作流程

包的下载,直接从CRAN镜像下载即可

install.packages("ggpubr")
library(ggpubr) #加载

数据准备及处理,如下图所示

  • 这里准备了我自己截取的一小部分数据做例子,首先要有分组信息,个体信息不重要。但是这样的数据不适合ggplot2环境下作图,因为有两个变量需要作图,这里需要对数据进行转换一下,采用的是reshape2包的melt函数
数据示例
setwd("C:\\Users\\Administrator\\Desktop")#设置工作路径
test_df <- read.table("clipboard",header = T,check.names = F)#读取数据
#test_df[,2:3] <- log1p(test_df[,2:3])
#test_df[,2:3] <- scale(test_df[,2:3], center = TRUE, scale = TRUE)
library(reshape2)
work_df <- melt(test_df, id.vars = "Treament")
  • 数据经过转换后成为了一个长矩阵,这样就可以通过ggplot2分析和作图了,这里的分组信息是Treatment,变量信息在variable中,变量对应的数值信息在value列中。
转换后的数据

数据分析, 组间差异比较

library(ggpubr)
compare_means(value ~ Treament, data = work_df, group.by = "variable")
# A tibble: 2 x 9
#  variable  .y.   group1 group2     p p.adj p.format p.signif method  
#  <fct>     <chr> <chr>  <chr>  <dbl> <dbl> <chr>    <chr>    <chr>   
#1 Hippurate value High   Low    0.321  0.45 0.32     ns       Wilcoxon
#2 Urate     value High   Low    0.224  0.45 0.22     ns       Wilcoxon

采用的是默认的Wilcoxon组间差异检验,可以看到HippurateUrate在两个分组之间差异均不显著

作图

尽管不显著,但是还是想看下数据的分布是如何的,那么这里将展示boxplotbarplotline作图结果,以及如何添加显著性标识。

1 | boxplot

p <- ggboxplot(work_df, x = "variable", y = "value",
               color = "Treament", palette = "jco", 
               add = "jitter") # palette可以按照期刊选择相应的配色,如"npg"等
p + stat_compare_means(aes(group = Treament), label = "p.signif")
# label = "p.signif"标识用星号或者''ns''等字符来表示显著性结果
ggsave("boxplot.tiff",width = 8,height = 8)
boxplot

2 | barplot

p1 <- ggbarplot(work_df, x = "variable", y = "value", add = "mean_se",
          color = "Treament", palette = "jco", 
          position = position_dodge(0.8))
p1 <- p1 + stat_compare_means(aes(group = Treament), label = "p.format", label.y = 180) 
# label = "p.format"标识用P值来标识显著性结果,如下图所示
ggsave("barplot.tiff",width = 8,height = 8)
barplot

3 | 数据点一一对应的boxplot图

可惜可能是我数据的问题,没有做出来那种效果

p2 <- ggpaired(work_df, x = "Treament", y = "value", 
                color = "Treament", palette = "jco", facet.by = "variable" ,
               line.color = "gray", line.size = 0.4, short.panel.labs = FALSE)
p2 <- p2 + stat_compare_means(aes(group = Treament), label = "p.format", label.y = 200)
我做的图
引用参考出处的图,本来应该这样的

4 | line图

p3 <- ggline(work_df, x = "variable", y = "value", add = "mean_se",
                color = "Treament", palette = "jco", 
                position = position_dodge(0.8))
p3 <- p3 + stat_compare_means(aes(group = Treament), label = "p.format", label.y = 180)
line图,但是适合那种不同水平的比较,或者时间序列

结语

怎么样,是不是很简单也很好看,当然我展示的只是基本图形,想要让你的图像更加色彩斑斓,可以有很多参数可以控制和调节。

参考

[1] https://www.r-bloggers.com/add-p-values-and-significance-levels-to-ggplots/

相关文章

  • 利用ggpubr+ggplot2做barplot和boxplot

    导读 以前总是借助PS来为新鲜出炉的R图添加统计显著标识,但是现在可以不用了,因为ggbubr可以一站式解决,而且...

  • R:多表ggplot/X轴色/segment

    表1:做箱图 表2:做柱形图 X轴配色 segment和配色 ggplot boxplot barplot seg...

  • R可视化

    boxplot() hist() plot() lines() barplot() pie() hist 横坐标表...

  • boxplot、barplot-summary

    一如既往的碎碎念:相处了三个月的小伙伴走了,留下我们,又是一顿唏嘘;成年后的相识都是这样,一转身就是一辈子,几乎是...

  • Python可视化17seborn-箱图boxplot

    本文系统详解利用python中seaborn.boxplot绘制箱图boxplot。seaborn.boxplot...

  • 2021-04-01boxplot怎么看?是什么意思?

    定义 按给定数值做箱线图。 格式 boxplot(x, ...)S3方法对对象'formula' boxplot(...

  • R语言学习笔记ggplot2

    1.从一个简单的boxplot开始 2.利用theme_set()修改 3.利用labs()修改 4.利用them...

  • R-ggplot2-Barplot拼所有之拼Boxplot

    目录 0.问题导入 1.示例数据 2.导入示例数据 3.数据预处理 4.样本T检验 5.指示线数据框制作 6.绘图...

  • 可视化:barplot

      今天继续分享生信分析中常见的图形 -- barplot。绘制的过程分别采用R基础函数barplot和ggplo...

  • 2020-06-29

    R语言boxplot绘图函数 boxplot 用于绘制箱线图,我们都知道boxplot 用于展示一组数据的总体分布...

网友评论

    本文标题:利用ggpubr+ggplot2做barplot和boxplot

    本文链接:https://www.haomeiwen.com/subject/umyhuqtx.html