ggplot2绘制分组小提琴图并添加统计学显著性标识

2023-11-30 03:20

本文主要是介绍ggplot2绘制分组小提琴图并添加统计学显著性标识,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

昨天我用CIBERSORT计算了22种免疫细胞的丰度,接下来需要就要可视化展示。前面的数据处理我用一致性聚类已经分为两组,用分组小提琴图可视化并添加显著性标识。最终图形如下所示:

 先准备cibersort计算出来的数据

rm(list = ls())#加载CIBERSORT计算好的免疫细胞丰度数据和分组信息
load("cibersort.Rdata")
load("cluster.Rdata")#共两个变量
immu_cell[1:4,1:4]
#          B cells naive B cells memory Plasma cells T cells CD8
#GSM274895    0.01745695     0.12191198            0  0.07672544
#GSM274896    0.03575428     0.04171772            0  0.09460395
#GSM274897    0.00000000     0.16174924            0  0.07250404
#GSM274898    0.22305092     0.32276996            0  0.03555180
head(group,3)
#             sample    group
#GSM274895 GSM274895 cluster1
#GSM274896 GSM274896 cluster1
#GSM274897 GSM274897 clusterlibrary(dplyr)
library(tidyr)
library(tibble)#转化为数据框并将行名转为为一列
immu_cell <- immu_cell %>% as.data.frame() %>% rownames_to_column("sample")
immu_cell[1:4,1:4]
#     sample B cells naive B cells memory Plasma cells
#1 GSM274895    0.01745695     0.12191198            0
#2 GSM274896    0.03575428     0.04171772            0
#3 GSM274897    0.00000000     0.16174924            0
#4 GSM274898    0.22305092     0.32276996            0#根据sampleID对两个数据框全连接,添加分组信息
data <- full_join(immu_cell,group,by="sample")
#对数据塑形,将中间22列免疫细胞数据变成长数据
data <- gather(data, Cell_type, Proportion, "B cells naive":"Neutrophils")
#将细胞类型转换为因子,保持画图的时候细胞顺序不变
data$Cell_type=factor(data$Cell_type,levels = colnames(immu_cell))
head(data,3)
#     sample    group     Cell_type Proportion
#1 GSM274895 cluster1 B cells naive 0.01745695
#2 GSM274896 cluster1 B cells naive 0.03575428
#3 GSM274897 cluster1 B cells naive 0.00000000#这一部分筛选出每个细胞类型中最大的值,为添加P值定位而准备的
location <- data %>% group_by(Cell_type) %>% slice_max(Proportion)
location$x <- seq(1,22,by=1)
head(location,3)
# A tibble: 3 × 5
# Groups:   Cell_type [3]
#  sample    group    Cell_type                 Proportion     x
# <chr>     <fct>    <chr>                          <dbl> <dbl>
#1 GSM274947 cluster1 B cells memory                 0.593     1
#2 GSM274902 cluster1 B cells naive                  0.676     2
#3 GSM274972 cluster1 Dendritic cells activated      0.109     3

数据准备好了,一个data,含有分组信息的长数据,一个location等会儿画显著性需要。

小提琴图的代码只有一条命令,但是我调试很很久,希望画得稍微好看一点吧。

ggplot(data,aes(Cell_type,Proportion,fill=group))+geom_violin(scale = "width",alpha=0.8,width=0.5,size=0.8)+ #画小提琴图scale_fill_manual(values = c("#F7903D","4D85BD"))+         #分组添加颜色stat_compare_means(aes(group=group),                       #按分组进行统计检验method = "t.test",paired = F,                             #非配对t检验symnum.args = list(cutpoint=c(0,0.001,0.01,0.05,1),symbols=c("***","**","*","ns")),label = "p.signif",label.y = location$Proportion+0.02,      #添加显著性符号的位置size=4.5)+                               #显著性符号的大小      geom_segment(data=location,                                 #在显著性符号下面添加一条短线aes(x=x,y=Proportion,xend=x+0.2,yend=Proportion),size=1)+xlab("")+                                                   #X标签ylab("Fraction")+                                           #y标签theme_bw()+theme(panel.grid.major=element_blank(),panel.grid.minor=element_blank(),panel.border=element_rect(size=1.2),                  #给边框加粗axis.text.x = element_text(angle=60,size=10,vjust = 1,hjust =1,color = "black"),                                                   axis.text.y = element_text(size =10),legend.position = c(0.9,0.85) )

 最终得到的分组小提琴图就画好了。

(我的统计学知识不太好,这里是否应该使用非配对t检验不确定,如有错误请指出。)

这篇关于ggplot2绘制分组小提琴图并添加统计学显著性标识的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/435432

相关文章

使用Python在Excel中创建和取消数据分组

《使用Python在Excel中创建和取消数据分组》Excel中的分组是一种通过添加层级结构将相邻行或列组织在一起的功能,当分组完成后,用户可以通过折叠或展开数据组来简化数据视图,这篇博客将介绍如何使... 目录引言使用工具python在Excel中创建行和列分组Python在Excel中创建嵌套分组Pyt

使用Python绘制蛇年春节祝福艺术图

《使用Python绘制蛇年春节祝福艺术图》:本文主要介绍如何使用Python的Matplotlib库绘制一幅富有创意的“蛇年有福”艺术图,这幅图结合了数字,蛇形,花朵等装饰,需要的可以参考下... 目录1. 绘图的基本概念2. 准备工作3. 实现代码解析3.1 设置绘图画布3.2 绘制数字“2025”3.3

使用Python绘制可爱的招财猫

《使用Python绘制可爱的招财猫》招财猫,也被称为“幸运猫”,是一种象征财富和好运的吉祥物,经常出现在亚洲文化的商店、餐厅和家庭中,今天,我将带你用Python和matplotlib库从零开始绘制一... 目录1. 为什么选择用 python 绘制?2. 绘图的基本概念3. 实现代码解析3.1 设置绘图画

使用C#如何创建人名或其他物体随机分组

《使用C#如何创建人名或其他物体随机分组》文章描述了一个随机分配人员到多个团队的代码示例,包括将人员列表随机化并根据组数分配到不同组,最后按组号排序显示结果... 目录C#创建人名或其他物体随机分组此示例使用以下代码将人员分配到组代码首先将lstPeople ListBox总结C#创建人名或其他物体随机分组

Python绘制土地利用和土地覆盖类型图示例详解

《Python绘制土地利用和土地覆盖类型图示例详解》本文介绍了如何使用Python绘制土地利用和土地覆盖类型图,并提供了详细的代码示例,通过安装所需的库,准备地理数据,使用geopandas和matp... 目录一、所需库的安装二、数据准备三、绘制土地利用和土地覆盖类型图四、代码解释五、其他可视化形式1.

如何用Python绘制简易动态圣诞树

《如何用Python绘制简易动态圣诞树》这篇文章主要给大家介绍了关于如何用Python绘制简易动态圣诞树,文中讲解了如何通过编写代码来实现特定的效果,包括代码的编写技巧和效果的展示,需要的朋友可以参考... 目录代码:效果:总结 代码:import randomimport timefrom math

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

【WebGPU Unleashed】1.1 绘制三角形

一部2024新的WebGPU教程,作者Shi Yan。内容很好,翻译过来与大家共享,内容上会有改动,加上自己的理解。更多精彩内容尽在 dt.sim3d.cn ,关注公众号【sky的数孪技术】,技术交流、源码下载请添加微信号:digital_twin123 在 3D 渲染领域,三角形是最基本的绘制元素。在这里,我们将学习如何绘制单个三角形。接下来我们将制作一个简单的着色器来定义三角形内的像素

Flutter 进阶:绘制加载动画

绘制加载动画:由小圆组成的大圆 1. 定义 LoadingScreen 类2. 实现 _LoadingScreenState 类3. 定义 LoadingPainter 类4. 总结 实现加载动画 我们需要定义两个类:LoadingScreen 和 LoadingPainter。LoadingScreen 负责控制动画的状态,而 LoadingPainter 则负责绘制动画。

Solr 使用Facet分组过程中与分词的矛盾解决办法

对于一般查询而言  ,  分词和存储都是必要的  .  比如  CPU  类型  ”Intel  酷睿  2  双核  P7570”,  拆分成  ”Intel”,”  酷睿  ”,”P7570”  这样一些关键字并分别索引  ,  可能提供更好的搜索体验  .  但是如果将  CPU  作为 Facet  字段  ,  最好不进行分词  .  这样就造成了矛盾  ,  解决方法