前言:
欢迎关注微信公众号:生信天团
本文微信连接:R包pheatmap绘制热图
此文参考自B站孟浩巍的系列视频[1]代码,利用个人测序数据绘图,现学现卖,不足之处,请多指教;
1. pheatmap热图解读:
文件输入为矩阵,按照矩阵中不同的数值填充上颜色;
图中每一行为输入文件的行名,设置了行名后就是筛选出来的差异基因名称;
图中每一列为不同处理数据;
颜色表示表达量;
z-score,当有多个rep时,行进行normalize
聚类,将行表达量接近的放一起;
2. 差异筛选:
# 载入已筛选出的差异表达的基因文件
> sign.gene <- read.csv("Sugar_A_vs_Yeast_A_diff_exp.csv", header = T, sep = "\t" )
#将Gene_ID列当作行名
rownames(sign.gene) <- sign.gene$Gene_ID
#设置筛选条件
> sign.gene.p_value <- sign.gene$pvalue < 0.05
> sign.gene.fc <- abs(sign.gene$log2FC) > 2
> sign.gene.TPM <- sign.gene$Sugar_A1_TPM > 100 | sign.gene$Sugar_A2_TPM > 100 | sign.gene$Sugar_A3_TPM > 100 | sign.gene$Yeast_A1_TPM > 100 | sign.gene$Yeast_A2_TPM > 100 | sign.gene$Yeast_A3_TPM > 100
#按上述条件选出差异表达所需要的基因
> sign.gene.all <- sign.gene.p_value & sign.gene.fc & sign.gene.TPM
#从表格中提取已筛选的差异基因
> sign.gene.real <- sign.gene[sign.gene.all, ]
筛选条件解读:
p_value: 统计学显著性,一般设置为小于0.05;
log2(fold_change) :处理与对照间变化的倍数,变化倍数设置为1,上调为正,下调为负,所以取绝对值,即abs(log2(fold_change) ) > 1;
FPKM:表达量归一化后的统计量,不同归一化方法不一样,也有用TPM等;
举例说,如果treat=0,09,control=0.01,虽然有统计学差异,但是无生物学差异。
3. 绘制热图:
# pheatmap绘制热图
#原文档数据值存放在第20-25列中
> pheatmap(sign.gene.real[,c(20:25)])
# 取log2
> pheatmap(log2(sign.gene.real[,c(20:25)]+1))
# 美化后热图
> pheatmap(log2(sign.gene.real[,c(20:25)]+1),
main="Sugar_A_vs_Yeast_A_heatmap",
color = colorRampPalette(c("blue","white","red"))(256),
fontsize=6, border_color = "grey60",
treeheight_row=50,treeheight_col = 30,
cellwidth = 30, cellheight = 6,
)
4. pheatmap热图展示
- 简单绘图:
> pheatmap(log2(sign.gene.real[,c(20:25)]+1))
- 简单美化处理:
> pheatmap(log2(sign.gene.real[,c(20:25)]+1),
main="Sugar_A_vs_Yeast_A_heatmap",
color = colorRampPalette(c("blue","white","red"))(256),
fontsize=6, border_color = "grey60",
treeheight_row=50,treeheight_col = 30,
cellwidth = 30, cellheight = 6,
)
-
测序公司图片:
扫描二维码关注