## 基本散點圖展示
### 應用場景
heatmap運用的地方比較多,能夠展示的信息也非常豐富,常用的就是展示基因在不同組別樣本中的表達情況。
### 利用limma包做一個差異表達分析
```R
load("./test_exp.Rdata")
# heatmap 在差異表達基因可以顯示的更有層次,那這里我們簡單的做一個差異分析,用heatmap展示差異表達基因
library(limma)
# 構建一個phenotype的文件標示出各個樣本tumor和normal屬性
rt_sam_m <- data.frame(cbind(colnames(rt), c(rep('Tumor', 57), rep('Normal', 57))), stringsAsFactors = FALSE)
colnames(rt_sam_m) <- c('samples_id', 'group')
m_group = factor(rt_sam_m$group, levels=c('Tumor', 'Normal'))
design_m = model.matrix(~0 + m_group)
row.names(design_m) <- rt_sam_m$samples_id
colnames(design_m) <- c('Tumor','Normal')
# 差異分析
m_fit <- lmFit(rt, design_m)
cont.matrix <- makeContrasts(TumorvsNormal = Tumor-Normal, levels = design_m)
m_fit2 <- contrasts.fit(m_fit, cont.matrix)
m_fit3 <- eBayes(m_fit2)
rt_diff <- topTreat(m_fit3, number = length(row.names(rt)))
rt_diff2 <- rt_diff[which(abs(rt_diff$logFC) > 1 & rt_diff$P.Value < 0.05), ]
dim(rt_diff2)#798 6, 有798個差異基因
```
>rt_diff2數據形式如下圖所示

### 利用heatmap.2做heatmap
```R
# 作為實例數據,對上述前100個基因做heatmap
library(gplots)
rt_ht <- rt[row.names(rt_diff2)[order(abs(rt_diff2$logFC), decreasing = TRUE)[1:100]], ]#取出前100的DEGs
mat_ht <- as.matrix(apply(rt_ht, 2, function(x){as.numeric(x)}))
mat_ht_z <- apply(mat_ht, 2, FUN = function(x){(x-median(x))/sd(x)})
row.names(mat_ht_z) <- row.names(rt_ht)
heatmap.2(mat_ht_z, col = colorpanel(99, "blue", "black", "red"), dendrogram = "both", keysize = 1,
hclustfun = function(x){hclust(x, method = 'ward.D2')}, trace = "none", density.info = "none")
# 顯示tumor和normal標示
heatmap.cols <- c(rep('red', 57), rep('blue', 57))
# ColSideColors設置分組的ColSide
heatmap.2(mat_ht_z, col = colorpanel(99, "blue", "black", "red"), dendrogram = "both", keysize = 1,
hclustfun = function(x){hclust(x, method = 'ward.D2')}, trace = "none", density.info = "none",
ColSideColors = heatmap.cols)
```


```R
# 選擇row或者col是否聚類
# Colv = T, Rowv = F
heatmap.2(mat_ht_z, col = colorpanel(99, "blue", "black", "red"), dendrogram = "both", keysize = 1,
hclustfun = function(x){hclust(x, method = 'ward.D2')}, trace = "none", density.info = "none",
ColSideColors = heatmap.cols, Colv = F, Rowv = T)
# 可以labs都去掉
# labRow = NA, labCol = NA
heatmap.2(mat_ht_z, col = colorpanel(99, "blue", "black", "red"), dendrogram = "both", keysize = 1,
hclustfun = function(x){hclust(x, method = 'ward.D2')}, trace = "none", density.info = "none",
ColSideColors = heatmap.cols, Colv = F, Rowv = T, labRow = NA, labCol = NA)
# 加上legend來標示tumor 和Normal
heatmap.2(mat_ht_z, col = colorpanel(99, "blue", "black", "red"), dendrogram = "both", keysize = 1,
hclustfun = function(x){hclust(x, method = 'ward.D2')}, trace = "none", density.info = "none",
ColSideColors = heatmap.cols, Colv = F, Rowv = T, labRow = NA, labCol = NA)
legend('topleft', legend = c('tumor', 'normal'), pch = 15, bty = 'n', col = c('red', 'blue'), text.col = "black")
```



- 智匯醫圈
- 第一章 前言
- 1.1 簡介
- 1.2 制作該教程的目的
- 1.3 學習該教程需要掌握的基礎知識
- 1.4 該教程適用人群
- 第二章 散點圖(scatter plot)
- 2.1 基本的散點圖
- 2.2 3D 散點圖
- 第三章 線圖(line plot)
- 3.1 基本的線圖
- 第四章 箱型圖(boxplot)
- 4.1 基本的箱型圖
- 4.2 圖形參數調整
- 4.3 多分組箱型圖
- 4.4 小提琴圖
- 第五章 密度圖(density plot)
- 5.1 基本的密度圖
- 第六章 熱圖(Heatmap)
- 6.1 基本的熱圖
- 6.2 ggplot2 heatmap
- 6.3 相關性熱圖
- 第七章 主成分分析(PCA)
- 7.1 2D PCA
- 7.2 3D PCA
- 第八章 ROC 曲線
- 8.1 基本的 ROC 曲線
- 第九章 生存分析(KM plot)
- 9.1 基本的生存分析
- 第十章 KEGG 和 GO 分析
- 10.1 KEGG 分析
- 10.2 GO 分析
- 第十一章 Circular plot
- 11.1 基本的 Circular plot
- 附錄 下載數據