R统计绘图 - 热图简化
歡迎關(guān)注天下博客:http://blog.genesino.com/2017/06/heatmap-simple/
Jump to…
熱圖繪制 - pheatmap
不改腳本的熱圖繪制
生信寶典,一起換個(gè)角度學(xué)生信
熱圖繪制 - pheatmap
繪制熱圖除了使用ggplot2,還可以有其它的包或函數(shù),比如pheatmap::pheatmap (pheatmap包中的pheatmap函數(shù))、gplots::heatmap.2等。
相比于ggplot2作heatmap, pheatmap會(huì)更為簡(jiǎn)單一些,一個(gè)函數(shù)設(shè)置不同的參數(shù),可以完成行列聚類、行列注釋、Z-score計(jì)算、顏色自定義等。那我們來看看效果怎樣。
data_ori <- “Grp_1;Grp_2;Grp_3;Grp_4;Grp_5
a;6.6;20.9;100.1;600.0;5.2
b;20.8;99.8;700.0;3.7;19.2
c;100.0;800.0;6.2;21.4;98.6
d;900;3.3;20.3;101.1;10000”
data <- read.table(text=data_ori, header=T, row.names=1, sep=”;”, quote=”“)
Grp_1 Grp_2 Grp_3 Grp_4 Grp_5
a 6.6 20.9 100.1 600.0 5.2
b 20.8 99.8 700.0 3.7 19.2
c 100.0 800.0 6.2 21.4 98.6
d 900.0 3.3 20.3 101.1 10000.0
pheatmap::pheatmap(data, filename=”pheatmap_1.pdf”)
雖然有點(diǎn)丑,但一步就出來了。
在heatmap美化篇提到的數(shù)據(jù)前期處理方式,都可以用于pheatmap的畫圖。此外Z-score計(jì)算在pheatmap中只要一個(gè)參數(shù)就可以實(shí)現(xiàn)。
pheatmap::pheatmap(data, scale=”row”, filename=”pheatmap_1.pdf”)
有時(shí)可能不需要行或列的聚類,原始展示就可以了。
pheatmap::pheatmap(data, scale=”row”, cluster_rows=FALSE, cluster_cols=FALSE, filename=”pheatmap_1.pdf”)
給矩陣 (data)中行和列不同的分組注釋。假如有兩個(gè)文件,第一個(gè)文件為行注釋,其第一列與矩陣中的第一列內(nèi)容相同 (順序沒有關(guān)系),其它列為第一列的不同的標(biāo)記,如下面示例中(假設(shè)行為基因,列為樣品)的2,3列對(duì)應(yīng)基因的不同類型 (TF or enzyme)和不同分組。第二個(gè)文件為列注釋,其第一列與矩陣中第一行內(nèi)容相同,其它列則為樣品的注釋。
row_anno = data.frame(type=c(“TF”,”Enzyme”,”Enzyme”,”TF”), class=c(“clu1”,”clu1”,”clu2”,”clu2”), row.names=rownames(data))
row_anno
type class
a TF clu1
b Enzyme clu1
c Enzyme clu2
d TF clu2
col_anno = data.frame(grp=c(“A”,”A”,”A”,”B”,”B”), size=1:5, row.names=colnames(data))
col_anno
grp size
Grp_1 A 1
Grp_2 A 2
Grp_3 A 3
Grp_4 B 4
Grp_5 B 5
pheatmap::pheatmap(data, scale=”row”,
cluster_rows=FALSE,
annotation_col=col_anno,
annotation_row=row_anno,
filename=”pheatmap_1.pdf”)
自定義下顏色吧。
values larger than 1 will give more color for high end.
Values between 0-1 will give more color for low end.
pheatmap::pheatmap(data, scale=”row”,
cluster_rows=FALSE,
annotation_col=col_anno,
annotation_row=row_anno,
color=colorRampPalette(c(‘green’,’yellow’,’red’), bias=1)(50),
filename=”pheatmap_1.pdf”)
heatmap.2的使用就不介紹了,跟pheatmap有些類似,而且也有不少教程。
不改腳本的熱圖繪制
繪圖時(shí)通常會(huì)碰到兩個(gè)頭疼的問題:
需要畫很多的圖,唯一的不同就是輸出文件,其它都不需要修改。如果用R腳本,需要反復(fù)替換文件名,繁瑣又容易出錯(cuò)。
每次繪圖都需要不斷的調(diào)整參數(shù),時(shí)間久了不用,就忘記參數(shù)放哪了;或者調(diào)整次數(shù)過多,有了很多版本,最后不知道用哪個(gè)了。
為了簡(jiǎn)化繪圖、維持腳本的一致,我用bash對(duì)R做了一個(gè)封裝,然后就可以通過修改命令好參數(shù)繪制不同的圖了。
先看一看怎么使用
首先把測(cè)試數(shù)據(jù)存儲(chǔ)到文件中方便調(diào)用。數(shù)據(jù)矩陣存儲(chǔ)在heatmap_data.xls文件中;行注釋存儲(chǔ)在heatmap_row_anno.xls文件中;列注釋存儲(chǔ)在heatmap_col_anno.xls文件中。
tab鍵分割,每列不加引號(hào)
write.table(data, file=”heatmap_data.xls”, sep=”\t”, row.names=T, col.names=T,quote=F)
如果看著第一行少了ID列不爽,可以填補(bǔ)下
system(“sed -i ‘1 s/^/ID\t/’ heatmap_data.xls”)
write.table(row_anno, file=”heatmap_row_anno.xls”, sep=”\t”, row.names=T, col.names=T,quote=F)
write.table(col_anno, file=”heatmap_col_anno.xls”, sep=”\t”, row.names=T, col.names=T,quote=F)
然后用程序sp_pheatmap.sh繪圖。
-f: 指定輸入的矩陣文件
-d:指定是否計(jì)算Z-score, (否), (按行算), (按列算)
-P: 行注釋文件
-Q: 列注釋文件
ct@ehbio:~/$ sp_pheatmap.sh -f heatmap_data.xls -d row -P heatmap_row_anno.xls -Q heatmap_col_anno.xls
一個(gè)回車就得到了下面的圖
字有點(diǎn)小,是因?yàn)閳D太大了,把圖的寬和高縮小下試試。
-f: 指定輸入的矩陣文件
-d:指定是否計(jì)算Z-score, (否), (按行算), (按列算)
-P: 行注釋文件
-Q: 列注釋文件
-u: 設(shè)置寬度,單位是inch
-v: 設(shè)置高度,單位是inch
ct@ehbio:~/$ sp_pheatmap.sh -f heatmap_data.xls -d row -P heatmap_row_anno.xls -Q heatmap_col_anno.xls -u 8 -v 12
橫軸的標(biāo)記水平放置
-A: 0, X軸標(biāo)簽選擇0度
-C: 自定義顏色,注意引號(hào)的使用,最外層引號(hào)與內(nèi)層引號(hào)不同,引號(hào)之間無交叉
-T: 指定給定的顏色的類型;如果給的是vector (如下面的例子), 則-T需要指定為vector; 否則結(jié)果會(huì)很怪異,只有倆顏色。
-t: 指定圖形的題目,注意引號(hào)的使用;參數(shù)中包含空格或特殊字符等都要用引號(hào)引起來作為一個(gè)整體。
ct@ehbio:~/$ sp_pheatmap.sh -f heatmap_data.xls -d row -P heatmap_row_anno.xls -Q heatmap_col_anno.xls -u 8 -v 12 -A 0 -C ‘c(“white”, “blue”)’ -T vector -t “Heatmap of gene expression profile”
sp_pheatmap.sh的參數(shù)還有一些,可以完成前面講述過的所有熱圖的繪制,具體如下:
CREATED BY Chen Tong (chentong_biology@163.com)
—-Matrix file————–
Name T0_1 T0_2 T0_3 T4_1 T4_2
TR19267|c0_g1|CYP703A2 1.431 0.77 1.309 1.247 0.485
TR19612|c1_g3|CYP707A1 0.72 0.161 0.301 2.457 2.794
TR60337|c4_g9|CYP707A1 0.056 0.09 0.038 7.643 15.379
TR19612|c0_g1|CYP707A3 2.011 0.689 1.29 0 0
TR35761|c0_g1|CYP707A4 1.946 1.575 1.892 1.019 0.999
TR58054|c0_g2|CYP707A4 12.338 10.016 9.387 0.782 0.563
TR14082|c7_g4|CYP707A4 10.505 8.709 7.212 4.395 6.103
TR60509|c0_g1|CYP707A7 3.527 3.348 2.128 3.257 2.338
TR26914|c0_g1|CYP710A1 1.899 1.54 0.998 0.255 0.427
—-Matrix file————–
—-Row annorarion file ————–
——1. At least two columns————–
——2. The first column should be the same as the first column in
matrix (order does not matter)————–
Name Clan Family
TR19267|c0_g1|CYP703A2 CYP71 CYP703
TR19612|c1_g3|CYP707A1 CYP85 CYP707
TR60337|c4_g9|CYP707A1 CYP85 CYP707
TR19612|c0_g1|CYP707A3 CYP85 CYP707
TR35761|c0_g1|CYP707A4 CYP85 CYP707
TR58054|c0_g2|CYP707A4 CYP85 CYP707
TR14082|c7_g4|CYP707A4 CYP85 CYP707
TR60509|c0_g1|CYP707A7 CYP85 CYP707
TR26914|c0_g1|CYP710A1 CYP710 CYP710
—-Row annorarion file ————–
—-Column annorarion file ————–
——1. At least two columns————–
——2. The first column should be the same as the first row in
———matrix (order does not matter)————–
Name Sample
T0_1 T0
T0_2 T0
T0_3 T0
T4_1 T4
T4_2 T4
—-Column annorarion file ————–
Usage:
sp_pheatmap.sh options
Function:
This script is used to do heatmap using package pheatmap.
The parameters for logical variable are either TRUE or FALSE.
OPTIONS:
-f Data file (with header line, the first column is the
rowname, tab seperated. Colnames must be unique unless you
know what you are doing.)[NECESSARY]
-t Title of picture[Default empty title]
[“Heatmap of gene expression profile”]
-a Display xtics. [Default TRUE]
-A Rotation angle for x-axis value (anti clockwise)
[Default 90]
-b Display ytics. [Default TRUE]
-H Hieratical cluster for columns.
Default FALSE, accept TRUE
-R Hieratical cluster for rows.
Default TRUE, accept FALSE
-c Clustering method, Default “complete”.
Accept “ward.D”, “ward.D2”,”single”, “average” (=UPGMA),
“mcquitty” (=WPGMA), “median” (=WPGMC) or “centroid” (=UPGMC)
-C Color vector.
Default pheatmap_default.
Aceept a vector containing multiple colors such as
<’c(“white”, “blue”)’> will be transferred
to
Bars
s-plot barPlot
s-plot horizontalBar
s-plot multiBar
s-plot colorBar
Lines
s-plot lines
Dots
s-plot pca
s-plot scatterplot
s-plot scatterplot3d
s-plot scatterplot2
s-plot scatterplotColor
s-plot scatterplotContour
s-plot scatterplotLotsData
s-plot scatterplotMatrix
s-plot scatterplotDoubleVariable
s-plot contourPlot
s-plot density2d
Distribution
s-plot areaplot
s-plot boxplot
s-plot densityPlot
s-plot densityHistPlot
s-plot histogram
Cluster
s-plot hcluster_gg (latest)
s-plot hcluster
s-plot hclust (depleted)
Heatmap
s-plot heatmapS
s-plot heatmapM
s-plot heatmap.2
s-plot pheatmap
s-plot pretteyHeatmap # obseleted
s-plot prettyHeatmap
Others
s-plot volcano
s-plot vennDiagram
s-plot upsetView
為了推廣,也為了激起大家的熱情,如果想要sp_pheatmap.sh腳本的,還需要?jiǎng)跓┐蠹覄?dòng)動(dòng)手,轉(zhuǎn)發(fā)此文章到朋友圈,并留言索取。
生信寶典,一起換個(gè)角度學(xué)生信
R語言學(xué)習(xí) - 熱圖繪制 (heatmap)
R語言學(xué)習(xí) - 基礎(chǔ)概念和矩陣操作
R語言學(xué)習(xí) - 熱圖美化
R語言學(xué)習(xí) - 熱圖簡(jiǎn)化
RBIOINFO
CHENTONG
版權(quán)聲明:本文為博主原創(chuàng)文章,轉(zhuǎn)載請(qǐng)注明出處。
alipay.png WeChatPay.png
總結(jié)
以上是生活随笔為你收集整理的R统计绘图 - 热图简化的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Nicetools:定一个小目标,先做它
- 下一篇: 机器学习算法 - 随机森林之决策树初探(