前情提要
最近在#单细胞常见图表会整理五种方法可视化Marker基因系列
目前已经整理前两种——Doheatmap以及Dotplot
可视化Marker基因及美化
在整理完Dotplot可视化细节之如何计算百分比和表达量平均值提到了文章中会使用Dotplot的结果,用热图的形式进行展示**
文章是单细胞文献复现月更交流群(门票99哦)里面复现的第一篇,胃癌的文章。
那这期一起来学习尝试复现一下,文章使用的里面展示Marker基因的方式。
获取绘图数据
获取需要展示的Marker基因集
这里使用Pbmc-3K的数据进行尝试,首先还是注释后的数据集,使用FindAllMarker计算每个亚群的Marker基因,并获取Top5的Marker基因用于后续的展示
#计算所有簇的Marker基因,并且可视化TOP5基因
# only.pos = TRUE,只关注上调;min.pct = 0.25,一个基因至少要在25%的细胞中表达
pbmc.markers <- FindAllMarkers(pbmc, only.pos = TRUE, min.pct = 0.25, logfc.threshold = 0.25, verbose = FALSE)
top5 = pbmc.markers %>% group_by(cluster) %>% top_n(n = 5, wt = avg_log2FC)
g = unique(top5$gene)
Dotplot结果数据获取
使用Dotplot绘图时候,可以将其保存给一个变量p,这时候直接输出p就是点图,使用View(p)
查看就可以看到绘图的数据和变量
p <- DotPlot(pbmc, features = g)
View(p)
我们需要的数据就保存在data
里面,提取出来用于绘图即可
整理数据并绘图
1. 首先将data数据提取出来保存为新的变量,然后整理为热图需要的格式
#提取数据
# 加载必要的包
library(tidyr)
library(dplyr)
library(pheatmap)
# 将数据存储在 dotplot_data 中
dotplot_data <- p$data
class(dotplot_data)
# 将数据转换为宽格式,以 `avg.exp.scaled` 为数值
heatmap_data <- dotplot_data %>%
select(features.plot, id, avg.exp.scaled) %>%
pivot_wider(names_from = features.plot, values_from = avg.exp.scaled)
# 将细胞分群ID列设置为行名
heatmap_data = column_to_rownames(heatmap_data,var = "id")
2. 使用pheatmap绘图
pheatmap(heatmap_data,
cluster_rows = F,
cluster_cols = F)
3. 调整颜色添加注释信息
虽然没有直接复现文献的结果图,但是会可以根据它的配色来调整热图的颜色
pheatmap(heatmap_data,
cluster_rows = F,
cluster_cols = F,
color = colorRampPalette(c("#c3ddf0", "#eaf2f9", "#e85a40"))(100))
添加细胞注释条例图
# 添加注释
annotation <- data.frame(CellType = row.names(heatmap_data))
row.names(annotation) <- row.names(heatmap_data)
pheatmap(heatmap_data,
cluster_rows = F,
cluster_cols = F,
color = colorRampPalette(c("#c3ddf0", "#eaf2f9", "#e85a40"))(100),
annotation_row = annotation)
调整一下热图格子的大小
pheatmap(heatmap_data,
cellwidth = 10,
cellheight = 15,
cluster_rows = F,
cluster_cols = F,
color = colorRampPalette(c("#c3ddf0", "#eaf2f9", "#e85a40"))(100))
调整之后看起来和文章的结果差不太多,那就暂时先调整到这里叭。大家如果感兴趣也可以自己调整试试看!
结尾小结
这次使用热图基于Dotplot结果展示marker基因的代码,使用ChatGPT辅助进行整理。
作为一个还在努力学习掌握R语言的小菜鸟,真的太爱能给出正确代码的chatGPT啦!
曾老师工作日会在生信技能树视频号给大家演示使用kimi进行答疑,大家可以参与直播互动呀!
不管是Kimi还是chatGPT,用好了都可以帮助提升工作效率,所以要好好借助这些工具呀!
chatGPT的话还是推荐:国内可稳定使用的GPT-4,还自带联网功能
文末友情宣传
如果你也想做单细胞转录组数据分析,最好是有自己的计算机资源哦,比如我们的2024的共享服务器交个朋友福利价仍然是800,而且还需要有基本的生物信息学基础,也可以看看我们的生物信息学马拉松授课,你的生物信息学入门课。