我之前写过一篇用R中pheatmap画heatmap
这篇实践一种交互式的方法iheatmapr
参考这里:
iheatmapr包:可交互的热图绘制方法——生信宝典
iheatmapr的帮助文档
1. 安装iheatmapr
包
install.packages("iheatmapr")
#如果R 版本不对可能会需要下面这行
BiocManager::install("S4Vectors")
2. library
所需包
library(iheatmapr)
library(datasets)
library(reshape2)
3. 使用acast
调用datasets
包内的Indometh
数据集的内容
Indometh_matrix <- acast(Indometh, Subject ~ time, value.var = "conc")
Indometh_matrix <- Indometh_matrix[as.character(1:6),]
rownames(Indometh_matrix) <- paste("Patient",rownames(Indometh_matrix))
4. 计算相关性矩阵
Indometh_patient_cor <- cor(t(Indometh_matrix))
5. 取每个样本数据中的最大值和最小值
patient_max_conc <- apply(Indometh_matrix,1,max)
patient_min_conc <- apply(Indometh_matrix,1,min)
6. 给每个样本随机分配一个分组
patient_groups <- c("A","A","B","A","B","B")
7. 绘制相关性矩阵热图
example_heatmap <- main_heatmap(Indometh_patient_cor, name = "Correlation")
example_heatmap
![](https://img.haomeiwen.com/i22557206/f72039f1a924ff0d.png)
8. 一些修饰
8.1 colors
修改颜色
main_heatmap(Indometh_patient_cor,
colors = "Pinks",
name = "Correlation")
![](https://img.haomeiwen.com/i22557206/bb3eaa21ecb21165.png)
8.2 两幅热图同时呈现
main_heatmap(Indometh_patient_cor, name = "Correlation") %>%
add_main_heatmap(Indometh_matrix, name = "Indometacin<br>Concentration")
![](https://img.haomeiwen.com/i22557206/d1ee9d7aa9fd47a7.png)
8.3 添加标签
main_heatmap(Indometh_matrix, name="Correlation") %>%
add_row_labels() %>%
add_col_labels() %>%
add_row_title("Patients", buffer=0.2) %>%
add_col_title("Patients", buffer=0.1)
buffer
表示:title文字与图之间的距离
![](https://img.haomeiwen.com/i22557206/9a5c430cd804d682.png)
8.4 添加聚类
main_heatmap(Indometh_patient_cor) %>%
add_row_clustering() %>%
add_col_clustering()
![](https://img.haomeiwen.com/i22557206/a674953e6ab5812b.png)
8.5 添加样本注释
main_heatmap(Indometh_patient_cor) %>%
add_row_annotation(data.frame("Max" = patient_max_conc,
"Min" = patient_min_conc,
"Groups" = c("A","A","B","B","A","B")),
colors = list("Max" = "Reds",
"Min" = "Blues",
"Groups" = c("purple","pink")))
![](https://img.haomeiwen.com/i22557206/2e467e7ea037d50e.png)
除了
add_row_annotation
,还可以使用add_row_signal
和add_row_groups
添加注释。
main_heatmap(Indometh_patient_cor) %>%
add_row_signal(patient_max_conc, "Max<br>Concentration", title = "Max", colors = "Reds") %>%
add_row_signal(patient_min_conc, "Min<br>Concentration", title = "Min", colors = "Reds") %>%
add_row_groups(c("A","A","B","B","A","B"), "Groups")
![](https://img.haomeiwen.com/i22557206/3fb2b79e986d557f.png)
这里一份完整的参数,随用随改
main_heatmap(Indometh_patient_cor,name = "Correlation") %>%
add_col_clustering() %>%
add_row_clustering(k = 3) %>%
add_row_title("Patients") %>%
add_col_title("Patients") %>%
add_row_annotation(data.frame("Max" = patient_max_conc,
"Min" = patient_min_conc,
"Groups" = patient_groups)) %>%
add_main_heatmap(Indometh_matrix,
name = "Indometacin<br>Concentration") %>%
add_col_labels() %>%
add_col_title("Time") %>%
add_col_summary()
网友评论