胃癌单细胞数据集GSE163558复现(五):细胞比例

图片

前言

Hello小伙伴们大家好,我是生信技能树的小学徒”我才不吃蛋黄“。今天是胃癌单细胞数据集GSE163558复现系列第五期。第四期,我们使用了DimPlot、FeaturePlot、DoHeatmap、DotPlot等多种函数对细胞群和基因进行了可视化。本期,我们将绘制饼图、堆积柱状图、箱线图、气泡图等,比较不同分组之间细胞比例差异。

1.背景

在细胞分群命名完成之后,我们可以比较不同样本和分组之间细胞比例的差异。细胞发生癌变、肿瘤细胞转移、药物治疗等刺激因素,都会导致肿瘤微环境中细胞类型发生改变。不同类型的细胞执行不同的生物学功能,通过计算细胞比例,我们可以评估细胞类型的组内及组间分布情况。

2.可视化

在这里,我们将依次绘制饼图、堆积柱状图、气泡图。

2.1 饼图

饼图可以直观展示组内各细胞比例的差异。

首先加载R包:

rm(list=ls())options(stringsAsFactors = F)library(Seurat)library(ggplot2)library(clustree)library(cowplot)library(dplyr)library(plotrix)library(ggsci)library(celldex)library(singleseqgset)library(devtools)

创建工作目录,并读取细胞分群注释后数据:

getwd()setwd()dir.create("5-prop")setwd('5-prop/')sce.all=readRDS( "../3-Celltype/sce_celltype.rds")sce.all

绘制饼图:

head(sce.all@meta.data)table(sce.all$celltype)mynames <-   table(sce.all$celltype) %>% names()myratio <-  table(sce.all$celltype) %>% as.numeric()pielabel <- paste0(mynames," (", round(myratio/sum(myratio)*100,2), "%)")cols <-c('#E64A35','#4DBBD4' ,'#01A187','#6BD66B','#3C5588'  ,'#F29F80'  ,         '#8491B6','#91D0C1','#7F5F48','#AF9E85','#4F4FFF','#CE3D33',         '#739B57','#EFE685','#446983','#BB6239','#5DB1DC','#7F2268','#800202','#D8D8CD')pie(myratio, labels=pielabel,    radius = 1.0,clockwise=T,    main = "celltype",col = cols)

图片

绘制3D饼图:

pie3D(myratio,labels = pielabel,explode = 0.1,       main = "Cell Proption",      height = 0.3,      labelcex  = 1)

图片

pie函数参数说明:

x: 数值向量,表示每个扇形的面积。labels: 字符型向量,表示各扇形面积标签。edges: 这个参数用处不大,指的是多边形的边数(圆的轮廓类似很多边的多边形)。radius: 饼图的半径。main: 饼图的标题。clockwise: 是一个逻辑值,用来指示饼图各个切片是否按顺时针做出分割。angle: 设置底纹的斜率。density: 底纹的密度。默认值为 NULL。col: 是表示每个扇形的颜色,相当于调色板。

2.2 堆积柱状图

堆积柱状图除了可以展示组内差异,还可以直观展示组间细胞比例差异。

绘制堆积柱状图前,首先整理图形输入数据:

library(tidyr)library(reshape2)tb=table(sce.all$tissue, sce.all$celltype)head(tb)library (gplots) balloonplot(tb)bar_data <- as.data.frame(tb)bar_per <- bar_data %>%   group_by(Var1) %>%  mutate(sum(Freq)) %>%  mutate(percent = Freq / `sum(Freq)`)head(bar_per) #write.csv(bar_per,file = "celltype_by_group_percent.csv")col =c("#3176B7","#F78000","#3FA116","#CE2820","#9265C1",                "#885649","#DD76C5","#BBBE00","#41BED1")colnames(bar_per)

可视化:

library(ggthemes)p1 = ggplot(bar_per, aes(x = percent, y = Var1)) +  geom_bar(aes(fill = Var2) , stat = "identity") + coord_flip() +  theme(axis.ticks = element_line(linetype = "blank"),        legend.position = "top",        panel.grid.minor = element_line(colour = NA,linetype = "blank"),         panel.background = element_rect(fill = NA),        plot.background = element_rect(colour = NA)) +  labs(y = " ", fill = NULL)+labs(x = 'Relative proportion(%)')+  scale_fill_manual(values=col)+  theme_few()+  theme(plot.title = element_text(size=12,hjust=0.5))p1

图片

上图是按样本类型(M、NT、PT)分组比较的,我们也可以按患者进行比较:

bar_data <- as.data.frame(tb)bar_per <- bar_data %>%   group_by(Var1) %>%  mutate(sum(Freq)) %>%  mutate(percent = Freq / `sum(Freq)`)head(bar_per) #write.csv(bar_per,file = "celltype_by_group_percent.csv")col =c("#3176B7","#F78000","#3FA116","#CE2820","#9265C1",       "#885649","#DD76C5","#BBBE00","#41BED1")colnames(bar_per)library(ggthemes)p2 = ggplot(bar_per, aes(x = percent, y = Var1)) +  geom_bar(aes(fill = Var2) , stat = "identity") + coord_flip() +  theme(axis.ticks = element_line(linetype = "blank"),        legend.position = "top",        panel.grid.minor = element_line(colour = NA,linetype = "blank"),         panel.background = element_rect(fill = NA),        plot.background = element_rect(colour = NA)) +  labs(y = " ", fill = NULL)+labs(x = 'Relative proportion(%)')+  scale_fill_manual(values=col)+  theme_few()+  theme(plot.title = element_text(size=12,hjust=0.5)) +   theme(axis.text.x = element_text(angle = 45, hjust = 1))p2

图片

X、Y轴转换一下:

p3 <- ggplot(bar_per, aes(y = percent, x = Var1)) +  geom_bar(aes(fill = Var2) , stat = "identity") + coord_flip() +  theme(axis.ticks = element_line(linetype = "blank"),        legend.position = "top",        panel.grid.minor = element_line(colour = NA,linetype = "blank"),         panel.background = element_rect(fill = NA),        plot.background = element_rect(colour = NA)) +  labs(y = " ", fill = NULL)+labs(x = 'Relative proportion(%)')+  scale_fill_manual(values=col)+  theme_few()+  theme(plot.title = element_text(size=12,hjust=0.5)) +   theme(axis.text.x = element_text(angle = 45, hjust = 1))p3

图片

ggplot函数参数说明:

原文链接:https://blog.csdn.net/a11113112/article/details/135091751

data:要用于绘图的数据集。mapping 或 aes:美学映射,用于将数据变量映射到图形属性,例如 x、y、color、size、shape 等。geom:几何对象,确定图形类型,比如 geom_point()(散点图)、geom_line()(折线图)、geom_bar()(条形图)等。x、y:指定 x 轴和 y 轴的数据变量。color、fill、shape、size:用于指定颜色、填充、形状和大小的变量。alpha:指定颜色透明度。group:指定分组变量。facet:面板分组,允许在一个图中绘制多个小图(facet_wrap() 或 facet_grid())。theme:用于设置图形的主题样式。labs:用于设置 x、y 轴标签和图例标签的文本。scale:用于调整比例尺和美学属性的尺度。coord:坐标系变换,例如 coord_flip() 可以交换 x 和 y 轴。position:用于调整图形中元素的位置,例如 position_dodge() 用于避免重叠的条形或点。xlim、ylim:控制 x 轴和 y 轴的绘图范围。coord_cartesian():类似于 xlim 和 ylim,但不会删除超出范围的数据点。labs():设置图形的标题、坐标轴标签和图例标题。ggtitle():设置图形的主标题。theme():调整图形的外观和布局,如背景、网格线、标签样式等。guides():控制图例的外观,如标题、标签和图例键的位置和样式。scale_x_continuous()、scale_y_continuous():调整 x 轴和 y 轴的连续变量的比例尺和标签。

.......

2.3 气泡图

气泡图则可以展示每组样本不同类型细胞的具体数量。

绘制气泡图:

unique(sce.all@meta.data$patient)tb=table(sce.all$patient, sce.all$celltype)head(tb)library (gplots) balloonplot(tb)

图片

可以调整字体大小:

balloonplot(tb, text.size=0.8,label.size=0.8)

图片

还可以调整X/Y标签的角度:

图片

以及标签字体的颜色:

图片

balloonplot函数参数说明:

x : 一个表对象,或一个向量或几个类别向量的列表,其中包含打印矩阵的第一个(x)边距的分组变量。y : 矢量或矢量列表,用于对绘制矩阵的第二(y)维变量进行分组。z : 打印矩阵中点大小的值向量。xlab : x维度的文本标签。这将显示在X轴和绘图标题中。ylab : y标注的文本标签。这将显示在坐标轴和绘图标题中。zlab : 点大小的文本标签。这将包含在地块标题中。dotsize : 最大点大小。可能需要为不同的打印设备和布局调整此值。dotchar : 用于点的绘图符号或字符。有关符号代码的points函数,请参见帮助页。dotcolor : 指定绘图点颜色的标量或向量。text.size, text.color : 行和列标题的字符大小和颜色

.......

结语

本期,我们绘制饼图、堆积柱状图、箱线图、气泡图等,比较不同分组之间细胞比例差异。下一期,我们将利用胃癌bulk数据(TCGA-STAD)协助区分正常上皮和恶性上皮,其中还将涵盖差异分析、富集分析、KM生存分析等bulk RNA-seq数据的常规分析。干货满满,欢迎大家持续追更,谢谢!

图片

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报。