heatmap-熱圖創(chuàng)建

首先惹苗,我們需要知道失尖,熱圖的原理就是根據(jù)你的matrix或者data.frame中行列數(shù)字大小善榛,映射到一個個獨立的小矩形面中的一種對數(shù)據(jù)直觀演示的一種方法戴而,只是用顏色深淺對數(shù)據(jù)大小對大面積數(shù)據(jù)展開后的展示砾肺;類似于條形圖-直方圖-餅圖-boxplot挽霉,都是對數(shù)據(jù)的直觀表示。

獲得熱圖有很多的包债沮,就用這個R自帶的pheatmap包來就可以了炼吴,也是很漂亮的呀呀呀呀呀呀。

下面是 pheatmap()的解釋

例子可以用下面的代碼表示

library(pheatmap)



? # Create test matrix

test = matrix(rnorm(200), 20, 10)

test[1:10, seq(1, 10, 2)] = test[1:10, seq(1, 10, 2)] + 3

test[11:20, seq(2, 10, 2)] = test[11:20, seq(2, 10, 2)] + 2

test[15:20, seq(2, 10, 2)] = test[15:20, seq(2, 10, 2)] + 4

colnames(test) = paste("Test", 1:10, sep = "")

rownames(test) = paste("Gene", 1:20, sep = "")

class(test)

str(test)

# Draw heatmaps

pheatmap(test)

pheatmap(test, kmeans_k = 2)

pheatmap(test, scale = "row", clustering_distance_rows = "correlation")

pheatmap(test,scale = "row")

pheatmap(test,scale="column")

pheatmap(test, color = colorRampPalette(c("navy", "white", "firebrick3"))(50))

###break 調節(jié)lengend的區(qū)間疫衩;col調節(jié)顏色硅蹦;scale調節(jié)

bk = unique(c(seq(-8,8, length=100)))

pheatmap(test,breaks = bk,,scale="column")

pheatmap(test,breaks=unique(seq(-2,8,length=100)),color=colorRampPalette(c("navy", "white", "firebrick3"))(100))

pheatmap(test, cluster_row = FALSE)

pheatmap(test, legend = FALSE)

# Show text within cells

pheatmap(test, display_numbers = TRUE)

pheatmap(test, display_numbers = TRUE, number_format = "\%.1e")

pheatmap(test, display_numbers = matrix(ifelse(test > 5, "*", ""), nrow(test)))

pheatmap(test, cluster_row = FALSE, legend_breaks = -1:4, legend_labels = c("0",

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? "1e-4", "1e-3", "1e-2", "1e-1", "1"))

# Fix cell sizes and save to file with correct size

pheatmap(test, cellwidth = 15, cellheight = 12, main = "Example heatmap")

pheatmap(test, cellwidth = 15, cellheight = 12, fontsize = 8, filename = "test.pdf")

# Generate annotations for rows and columns

annotation_col = data.frame(

? CellType = factor(rep(c("CT1", "CT2"), 5)),

? Time = 1:5

)

rownames(annotation_col) = paste("Test", 1:10, sep = "")

annotation_row = data.frame(

? GeneClass = factor(rep(c("Path1", "Path2", "Path3"), c(10, 4, 6)))

)

rownames(annotation_row) = paste("Gene", 1:20, sep = "")

# Display row and color annotations

pheatmap(test, annotation_col = annotation_col)

pheatmap(test, annotation_col = annotation_col, annotation_legend = FALSE,legend_breaks = NA)

pheatmap(test, annotation_col = annotation_col, annotation_row = annotation_row)

pheatmap(test, annotation_col = annotation_col, annotation_row = annotation_row,annotation_legend? = F)

# Specify colors

ann_colors = list(

? Time = c("white", "firebrick"),

? CellType = c(CT1 = "#1B9E77", CT2 = "#D95F02"),

? GeneClass = c(Path1 = "#7570B3", Path2 = "#E7298A", Path3 = "#66A61E")

)

pheatmap(test, annotation_col = annotation_col, annotation_colors = ann_colors, main = "Title")

pheatmap(test, annotation_col = annotation_col, annotation_row = annotation_row,

? ? ? ? annotation_colors = ann_colors)

pheatmap(test, annotation_col = annotation_col, annotation_colors = ann_colors[2])

# Gaps in heatmaps

pheatmap(test, annotation_col = annotation_col, cluster_rows = FALSE, gaps_row = c(10, 14))

pheatmap(test, annotation_col = annotation_col, cluster_rows = FALSE, gaps_row = c(10, 14),

? ? ? ? cutree_col = 2)

# Show custom strings as row/col names

labels_row = c("", "", "", "", "", "", "", "", "", "", "", "", "", "", "",

? ? ? ? ? ? ? "", "", "Il10", "Il15", "Il1b")

table(labels_row)

pheatmap(test, annotation_col = annotation_col, labels_row = labels_row)

# Specifying clustering from distance matrix

drows = dist(test, method = "minkowski")

dcols = dist(t(test), method = "minkowski")

pheatmap(test, clustering_distance_rows = drows, clustering_distance_cols = dcols)

# Modify ordering of the clusters using clustering callback option

callback = function(hc, mat){

? sv = svd(t(mat))$v[,1]

? dend = reorder(as.dendrogram(hc), wts = sv)

? as.hclust(dend)

}

pheatmap(test, clustering_callback = callback)

## Not run:

# Same using dendsort package

library(dendsort)

callback = function(hc, ...){dendsort(hc)}

pheatmap(test, clustering_callback = callback)



完整例子:###例子

###創(chuàng)建matrix

test = matrix(rnorm(200), 20, 10)

test[1:10, seq(1, 10, 2)] = test[1:10, seq(1, 10, 2)] + 3

test[11:20, seq(2, 10, 2)] = test[11:20, seq(2, 10, 2)] + 2

test[15:20, seq(2, 10, 2)] = test[15:20, seq(2, 10, 2)] + 4

colnames(test) = paste("Test", 1:10, sep = "")

rownames(test) = paste("Gene", 1:20, sep = "")

###建立annotation數(shù)據(jù)框

annotation_col = data.frame(

? CellType = factor(rep(c("CT1", "CT2"), 5)),

? Time = 1:5

)

rownames(annotation_col) = paste("Test", 1:10, sep = "")

annotation_row = data.frame(

? GeneClass = factor(rep(c("Path1", "Path2", "Path3"), c(10, 4, 6)))

)

rownames(annotation_row) = paste("Gene", 1:20, sep = "")

class(test)

str(test)

pheatmap(test,scale = "row",clustering_distance_rows = "euclidean",clustering_distance_cols = "euclidean", clustering_method = "complete",

? ? ? ? cluster_rows = TRUE,cluster_cols = TRUE,cutree_rows = NA, cutree_cols = NA,

? ? ? ? color = colorRampPalette(c("navy", "white", "firebrick3"))(100),

? ? ? ? border_color = "grey60",cellwidth = NA, cellheight = NA,

? ? ? ? legend = TRUE, legend_breaks = NA,legend_labels = NA, breaks = unique(c(seq(-6,6, length=100))),

? ? ? ? annotation_row = annotation_row , annotation_col = annotation_col,annotation = NA, annotation_colors = NA, annotation_legend = TRUE,

? ? ? ? annotation_names_row = TRUE, annotation_names_col = TRUE,

? ? ? ? show_rownames = T, show_colnames = T, main = "Heatmap",

? ? ? ? display_numbers = F, number_format = "%.2f", number_color = "grey30")

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市闷煤,隨后出現(xiàn)的幾起案子童芹,更是在濱河造成了極大的恐慌,老刑警劉巖鲤拿,帶你破解...
    沈念sama閱讀 218,755評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件假褪,死亡現(xiàn)場離奇詭異,居然都是意外死亡近顷,警方通過查閱死者的電腦和手機生音,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來窒升,“玉大人缀遍,你說我怎么就攤上這事”バ耄” “怎么了域醇?”我有些...
    開封第一講書人閱讀 165,138評論 0 355
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我譬挚,道長锅铅,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,791評論 1 295
  • 正文 為了忘掉前任减宣,我火速辦了婚禮盐须,結果婚禮上,老公的妹妹穿的比我還像新娘漆腌。我一直安慰自己丰歌,他們只是感情好,可當我...
    茶點故事閱讀 67,794評論 6 392
  • 文/花漫 我一把揭開白布屉凯。 她就那樣靜靜地躺著,像睡著了一般眼溶。 火紅的嫁衣襯著肌膚如雪悠砚。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,631評論 1 305
  • 那天堂飞,我揣著相機與錄音灌旧,去河邊找鬼。 笑死绰筛,一個胖子當著我的面吹牛枢泰,可吹牛的內容都是我干的。 我是一名探鬼主播铝噩,決...
    沈念sama閱讀 40,362評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼衡蚂,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了骏庸?” 一聲冷哼從身側響起毛甲,我...
    開封第一講書人閱讀 39,264評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎具被,沒想到半個月后玻募,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,724評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡一姿,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年七咧,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片叮叹。...
    茶點故事閱讀 40,040評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡艾栋,死狀恐怖,靈堂內的尸體忽然破棺而出衬横,到底是詐尸還是另有隱情裹粤,我是刑警寧澤,帶...
    沈念sama閱讀 35,742評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站遥诉,受9級特大地震影響拇泣,放射性物質發(fā)生泄漏。R本人自食惡果不足惜矮锈,卻給世界環(huán)境...
    茶點故事閱讀 41,364評論 3 330
  • 文/蒙蒙 一霉翔、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧苞笨,春花似錦债朵、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至粤咪,卻和暖如春谚中,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背寥枝。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評論 1 270
  • 我被黑心中介騙來泰國打工宪塔, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人囊拜。 一個月前我還...
    沈念sama閱讀 48,247評論 3 371
  • 正文 我出身青樓某筐,卻偏偏與公主長得像,于是被迫代替她去往敵國和親冠跷。 傳聞我的和親對象是個殘疾皇子南誊,可洞房花燭夜當晚...
    茶點故事閱讀 44,979評論 2 355

推薦閱讀更多精彩內容