胃癌单细胞数据集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数据的常规分析。干货满满,欢迎大家持续追更,谢谢!
图片
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报。