用了這么久pheatmap包繪熱圖巩步,自認(rèn)為很嫻熟了旁赊。但今天遇到了一件詭異的事,折騰了我一兩個(gè)小時(shí)椅野,記錄備忘终畅。
不加行注釋時(shí)正常顯示
pheatmap(pld,
cluster_rows = F,
cluster_cols = F,
gaps_col = c(5,10,15,20),
annotation_col = annotaion_col,
color = colorRampPalette(colors = c("white","red"))(100))
這時(shí)一切正常,border_color我根本不用去動(dòng)它竟闪。
加上行注釋后熱圖邊框消失了
pheatmap(pld,
cluster_rows = F,
cluster_cols = F,
gaps_col = c(5,10,15,20),
# border_color = "grey60",
annotation_col = annotaion_col,
annotation_row = annotation_row,
color = colorRampPalette(colors = c("white","red"))(100))
加上行注釋后离福,邊框莫名消失了。要不是因?yàn)橛绊懼庇^(guān)比較炼蛤,我也不會(huì)去折騰妖爷。
不管我怎么設(shè)置border_color,長(zhǎng)寬比輸出等操作都不管用理朋。
甚至修改了下源碼絮识,把行名放在了左邊展示還是不管用。
嘗試找原因
列注釋能正常顯示嗽上,行注釋時(shí)邊框消失了次舌。列注釋和行注釋里代碼基本是一樣的,在我的數(shù)據(jù)里兽愤,列注釋比行注釋要短很多彼念,分析是不是文本長(zhǎng)度之故?
annotation_row$test <- c(rep(c("test1","test2"),each=36),"test3")
pheatmap(pld2,cluster_rows = F,cluster_cols = F,
gaps_col = c(5,10,15,20),
annotation_col = annotaion_col[-1],
annotation_row = annotation_row[3],
# border_color = "black",
color = colorRampPalette(colors = c("white","red"))(100))
把長(zhǎng)長(zhǎng)的行注釋改為簡(jiǎn)短的文本后浅萧,邊框還真恢復(fù)了市框。說(shuō)明就是這個(gè)原因贼穆,可能是文本太長(zhǎng)以及樣本太多而將邊框壓縮掉了腊状,但這不能通過(guò)圖片長(zhǎng)寬來(lái)解決纳本。那么pheatmap有什么解決之道嗎?
通過(guò)調(diào)節(jié)單元格長(zhǎng)寬設(shè)置來(lái)解決
pheatmap中有cellwidth 和cellheight 兩個(gè)參數(shù)來(lái)調(diào)節(jié)單元格的長(zhǎng)寬土思,通過(guò)改變這兩個(gè)值可以在長(zhǎng)文本注釋情況下使邊框重現(xiàn)务热。
pheatmap(pld,
cluster_rows = F,
cluster_cols = F,
angle_col = 90,
annotation_colors = ann_colors,
gaps_col = c(5,10,15,20),
#border_color = "grey60",
annotation_col = annotaion_col,
annotation_row = annotation_row,
cellwidth = 11,cellheight = 9, #調(diào)節(jié),解決熱圖區(qū)邊框不見(jiàn)的問(wèn)題
color = colorRampPalette(colors = c("white","red"))(100))
這兩個(gè)參數(shù)默認(rèn)NA己儒,不知具體數(shù)值崎岂,只有通過(guò)不斷微調(diào)才能達(dá)到自己想要的效果。
感謝這個(gè)問(wèn)題闪湾,讓我找到解決方法:https://geek-qa.imtqy.com/questions/384839/index.html