pheatmap()畫圖2

一:創建矩陣:

# 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 = "")

二:畫pheatmap圖

# Draw heatmaps

圖:1:pheatmap(test)? ##啥都不加?

圖2:pheatmap(test, kmeans_k = 2)? ?##分成2x的圖

圖3:pheatmap(test, scale = "row", clustering_distance_rows = "correlation")? ##clustering_distance_row表示行距離度量的方法?#表示行聚類使用皮爾森相關系數聚類。

圖4:pheatmap(test,color = colorRampPalette(c("navy", "white", "firebrick3"))(50))? ? ##賦值漸變顏色調色板colorRampPalette屬性,選擇“?深藍色,磚紅色,”漸變,50就是將這三種顏色設置為50個梯度一般看到的這三個"green","black","red")

圖5:pheatmap(test, cluster_row = FALSE)? ##我們不應該對行進行聚類? ?(##列的順序是時間序列,我們不應該對列進行聚類)

圖6:pheatmap(test,legend = FALSE)? ?##是否顯示圖例


圖1
圖2
圖3
圖4


圖5


圖6

三:顯示單元格內容

# Show text within cells

pheatmap(test, display_numbers = TRUE)

圖7:pheatmap(test, display_numbers = TRUE, number_format = "%.2f")##number_format設置數值的格式,較常用的有"%.2f"(保留小數點后兩位,1f,暴力小數點后1位),"%.1e"(科學計數法顯示,保留小數點后一位)

圖8:pheatmap(test, display_numbers = matrix(ifelse(test > 5, "*", ""), nrow(test)))##test的沒一行中大于5的用*標出來

圖9:pheatmap(test, cluster_row = FALSE, legend_breaks = -1:4, legend_labels = c("0", "1e-4", "1e-3", "1e-2", "1e-1", "1"))##在legend上的-1~4的位置顯示'0', '1e-4', '1e-3', '1e-2', '1e-1', '1'

圖10:pheatmap(test, border_color = blues9, display_numbers = TRUE)##熱圖的每個小塊之間以灰色隔開(參數border_color,如果不想要border可以設置為blues9,當然也可以設置成其它顏色)


圖7


圖8



圖9


圖10

四:修正單元格大小,并將其保存到具有正確大小的文件中

# Fix cell sizes and save to file with correct size

圖11:pheatmap(test, cellwidth = 15, cellheight = 12, main = "Example heatmap")?#main可設置熱圖的標題

圖12:pheatmap(test, cellwidth = 15, cellheight = 12,fontsize = 8, filename = "test.pdf")?#fontsize設置字體大小,filename可直接將熱圖存出,支持格式png, pdf, tiff, bmp, jpeg,并且可以通過width(寬), height(高)設置圖片的 大小;


圖11


圖12

五:為行和列生成注釋并顯示顯示行和顏色注釋

# 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

圖13:pheatmap(test,annotation_col = annotation_col)? ##顯示行列注釋

圖14:pheatmap(test, annotation_col = annotation_col, annotation_row = annotation_row)? ?##行與列的注釋分開

圖15:pheatmap(test, annotation_col = annotation_col,annotation_legend = FALSE)##右上角注釋圖例不現實


圖13


圖14


圖15

六:更改列中文本的角度

#Change angle of text in the columns

圖16:pheatmap(test, annotation_col = annotation_col, annotation_row = annotation_row,angle_col = "45")##列下面的注釋角度為45度'arg' should be one of “270”, “0”, “45”, “90”, “315”)

圖17:pheatmap(test, annotation_col = annotation_col,angle_col = "0")??##列下面的注釋角度為0度


圖16:


圖17

七:指定顏色

# Specify colors

ann_colors= list(

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

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

GeneClass = c(Path1 = "#7570B3", Path2 = "#E7298A", Path3 = "#66A61E"))##注意ann_colors是列表

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

圖19:pheatmap(test, annotation_col = annotation_col, annotation_row = annotation_row, annotation_colors = ann_colors)

圖20:pheatmap(test, annotation_col = annotation_col, annotation_colors =ann_colors[2]) 2可以改變得? ?

圖21:pheatmap(test, annotation_col = annotation_col, annotation_colors =ann_colors[4])


圖18


圖19


圖20


圖21

八:生成有gap的熱圖

#Gaps in heatmaps?

圖22:pheatmap(test, annotation_col = annotation_col, cluster_rows = FALSE, gaps_row = c(10, 14))??

圖23:pheatmap(test, annotation_col = annotation_col, cluster_rows = FALSE, gaps_row = c(10, 14), cutree_col = 2)??#cutree_rows, cutree_cols可以根據行列的聚類數將熱圖分隔開


圖22


圖23

九:顯示自定義字符串作為行/列名稱

#Show custom strings as row/col names

labels_row = c("", "", "", "", "", "", "", "", "", "", "", "", "", "", "","", "","Il10", "Il15", "Il1b")##這里相當于是給表達量最高?的三個命名了

圖24:pheatmap(test, annotation_col = annotation_col, labels_row = labels_row)

labels_row = c("1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15",

???????????????"16", "17", "18", "19", "20")? ?##可以給所有的20行都命名(如第三幅圖)

圖25:pheatmap(test, annotation_col = annotation_col, labels_row = labels_row)??


圖24


圖25

十:從距離矩陣指定聚類

# Specifying clustering from distance matrix

drows = dist(test, method = "minkowski")? ? #表示行聚類除了使用皮爾森相關系數聚類,也可以自定義為這種minkowski

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

圖26:pheatmap(test, clustering_distance_rows = drows, clustering_distance_cols = dcols)


圖26

十一:使用群集回調選項修改群集的順序

#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)

}

圖27:pheatmap(test, clustering_callback = callback)


圖27

十二:十一這一步可以用dendsort包畫畫

library(dendsort)

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

圖28:pheatmap(test, clustering_callback = callback)


圖28

搞定!

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,517評論 6 539
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,087評論 3 423
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 177,521評論 0 382
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,493評論 1 316
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,207評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,603評論 1 325
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,624評論 3 444
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,813評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,364評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,110評論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,305評論 1 371
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,874評論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,532評論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,953評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,209評論 1 291
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,033評論 3 396
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,268評論 2 375

推薦閱讀更多精彩內容