R语言包ggplot2绘制多组箱线图

本文记录于2021年6月28日,2022年11月14日更新,如果内容有误,请私信或评论,我会在第一时间进行更正。

由于许多人好像对 ggplot2所需要的数据的结构不是很清楚,那么我在这里补充一些内容,希望能够帮助大家理解下面的绘图,后续有时间,我也会重新开一个新的帖子,对ggplot2的数据以及各种常用形式的绘图进行更清晰完整的说明。

R语言包ggplot2绘制多组箱线图

首先需要强调一下,ggplot2在进行绘图前,基本都需要把数据转化为上图右边的形式,即三个列的形式,对于初始数据并没有太多的要求,矩阵,列表等等。

如果数据是类似上图左边的形式,则只要指定行名然后使用melt函数转换即可,如下:

data

同理,如果想要指定特定的列用来绘图,只需要指定列即可:

data

鉴于有挺多人对该问题有疑惑,我把完整的代码和数据放在这里,希望还有疑惑的同学看一下,如果还是有不明白的地方一起讨论。

Cibersort的数据与代码-算法与数据结构文档类资源-CSDN下载

最近在做cibersort浸润分析,在对结果做可视化的时候遇到一点问题(问题解答蓝字部分)

R语言包ggplot2绘制多组箱线图

根据默认的绘图只能进行一组数据的绘制,而我想要的结果是不同组数据同时展示

R语言包ggplot2绘制多组箱线图

就是这张图这种,然后在网上查了一下这个问题,虽然R语言相关的可视化问题挺多,但是没有发现这个问题怎么解决。

不过也有一些帖子给了启发,就是导入一个额外的样本表型信息,然后再在代码的fill属性中设置选择样本信息,这对和我一样的小白们讲是比较麻烦的一种解决方法。

后来结合这个思路,我找到了一个解决办法:

这个是原始数据

R语言包ggplot2绘制多组箱线图

这个是自己手动添加了分组信息之后的数据

R语言包ggplot2绘制多组箱线图

最简单的解决方法就是在数据中对样本直接添加分组信息,根据自己做分析时的分组,直接添加在cibersort的结果中。

代码也只需要非常简单的修改

plot.info_all %
  as.data.frame() %>%
  rownames_to_column("sample") %>%
  pivot_longer(cols = 3:8,
               names_to = "CellType",
               values_to = "Composition")

plot.info_all

Q&A

1,针对代码”plot.info_all[,c(19,2,20)]”中的”19,2,20″进行一个解释

R语言包ggplot2绘制多组箱线图

上面这张图是免疫浸润的结果,这个结果是每个样本的每种免疫细胞的评分,对于每个样本,这些评分的和是1,我们进行免疫浸润的目的就是得到这个占比,以此来进行针对单样本层面的免疫分析。

绘图则是对结果进行可视化的展示,在刚才那行代码中,就是对需要展示的结果进行选择,同时需要结合前面一部分代码:

plot.info_all %
  as.data.frame() %>%
  rownames_to_column("sample") %>%
  pivot_longer(cols = 3:10,
               names_to = "CellType",
               values_to = "Composition")

注意这部分代码里的”cols = 3:10″,意思是选择刚才那个免疫浸润结果里的第3到10列进行读取

R语言包ggplot2绘制多组箱线图

R语言包ggplot2绘制多组箱线图

从结果中可以看出,进行列选择之前是24列,选择之后是19列,”19,2,20 “中19 指的是CellType,就是盒图结果的X轴名称,2 指的是分组依据,也就是前面提到的手动添加的分组信息,20 指的是Compostion列,也就是将选择的细胞进行计算之后得到的分值

这里多说一句,plot.info_all的数据是以列的方式进行保存的,在绘图时进行读取并绘图的依据便是前面选择的三个对象

如果绘图时想要根据自己的需求进行选择对象,就可以通过这两处修改进行选择了

2,对两组或任意组直接的差异关系进行对比,并显示

R语言包ggplot2绘制多组箱线图

代码如下:

library("ggsignif")
library(gridExtra)
library(tibble)#rownames_to_column
library(ggplot2)
library(grid)
library(reshape2)
library(ggpubr)
library(dplyr)
library(tidyr)
library(pheatmap)
pkgs %
  as.data.frame() %>%
  rownames_to_column("sample") %>%
  pivot_longer(cols = 3,
               names_to = "CellType",
               values_to = "Composition")
###分组进行绘图
plot.info_1

此处代码仅供参考

我把代码与数据文件上传了CSDN资源

boxplot.zip_matlabboxplot美化-其它文档类资源-CSDN下载

有兴趣的可以支持一下

Original: https://blog.csdn.net/weixin_52730798/article/details/118314284
Author: 彩虹色的朝阳
Title: R语言包ggplot2绘制多组箱线图

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/614711/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球