You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何用R语言绘制基因表达分析的可发表级热图

如何用R语言绘制基因表达分析的可发表级热图

嘿,我来帮你搞定这个可发表级别的基因表达热图!你手里有z-score数据和PAM聚类结果,刚好可以用R里的pheatmap包来实现——这个包做出来的图特别适配期刊发表需求,灵活度拉满。下面我一步步给你拆解操作:

第一步:准备数据与加载工具

首先得把你的数据整理成热图需要的格式,同时加载必要的R包:

# 先安装需要的包(如果还没装过)
install.packages("pheatmap")
install.packages("viridis") # 可选,提供更友好的色盲友好型配色

# 加载包
library(pheatmap)
library(viridis)

接下来处理你的数据集(假设你的数据框名叫gene_data):

# 把基因名设为行名,方便后续热图识别
rownames(gene_data) <- gene_data$Gene.Name

# 提取z-score表达矩阵(去掉Gene.Name列)
expr_matrix <- gene_data[, -which(colnames(gene_data) == "Gene.Name")]

# 提取最后一行的PAM聚类信息,然后从表达矩阵中移除这一行
cluster_info <- expr_matrix[nrow(expr_matrix), ]
expr_matrix <- expr_matrix[-nrow(expr_matrix), ]

# 把聚类信息转成数据框,作为热图的行注释
row_annotation <- data.frame(PAM_Cluster = as.factor(cluster_info))
rownames(row_annotation) <- rownames(expr_matrix) # 确保注释和基因行名对应

第二步:绘制基础热图

先画一个基础版本,确认数据没问题:

pheatmap(expr_matrix,
         annotation_row = row_annotation,  # 加上PAM聚类的行注释
         scale = "none",                   # 你的数据已经是z-score,不需要再标准化
         show_rownames = TRUE,             # 显示基因名
         show_colnames = TRUE,             # 显示样本名
         treeheight_row = 0,               # 如果你想直接用PAM聚类结果,关掉热图自带的行聚类树
         treeheight_col = 20               # 样本聚类树的高度,按需调整
)

第三步:优化为发表级样式

接下来调整细节,让图符合期刊要求:

pheatmap(expr_matrix,
         annotation_row = row_annotation,
         scale = "none",
         show_rownames = TRUE,
         show_colnames = TRUE,
         treeheight_row = 0,
         treeheight_col = 20,
         color = colorRampPalette(c("navy", "white", "firebrick3"))(100), # 经典红蓝渐变配色,符合期刊偏好
         # 也可以用色盲友好的viridis配色:color = viridis(100, direction = -1)
         border_color = NA,                # 去掉单元格边框,让图更清爽
         fontsize = 10,                   # 整体字体大小
         fontsize_row = 8,                # 基因名字体大小(如果基因多可以再调小)
         fontsize_col = 9,                # 样本名字体大小
         annotation_names_row = FALSE,    # 去掉注释区的标题(如果不需要的话)
         legend_title = "Z-score",        # 图例标题
         legend_position = "right",       # 图例位置
         main = "Gene Expression Z-score Heatmap (PAM Clustering)" # 图的主标题
)

额外技巧:按PAM聚类排序基因

如果想让同一簇的基因放在一起显示,可以按PAM聚类结果排序后再绘图:

# 按照PAM聚类的簇对基因排序
sorted_genes <- rownames(row_annotation)[order(row_annotation$PAM_Cluster)]
expr_matrix_sorted <- expr_matrix[sorted_genes, ]
row_annotation_sorted <- row_annotation[sorted_genes, ]

# 绘制排序后的热图
pheatmap(expr_matrix_sorted,
         annotation_row = row_annotation_sorted,
         scale = "none",
         show_rownames = TRUE,
         show_colnames = TRUE,
         treeheight_row = 0,
         treeheight_col = 20,
         color = colorRampPalette(c("navy", "white", "firebrick3"))(100),
         border_color = NA,
         fontsize = 10,
         fontsize_row = 8,
         fontsize_col = 9,
         annotation_names_row = FALSE,
         legend_title = "Z-score",
         main = "Gene Expression Z-score Heatmap (Sorted by PAM Clustering)"
)

备注:内容来源于stack exchange,提问作者Alphonse Charbel

火山引擎 最新活动