我pheatmap()使用以下代码使用该函数创建热图:
library(pheatmap)
pheatmap((data_matrix[,1:11]), cluster_rows = F, cluster_cols = F, scale="none",
show_rownames=F, treeheight_row = F,
color=colorRampPalette(rev(c("red","white")))(50),
main="values", cex.main=1.2)
Run Code Online (Sandbox Code Playgroud)
我想在某些位置添加文字和线条以表示组和百分比。
abline()并且text()不工作,过度绘图我到目前为止还没有成功。
最好的方法是什么?
谢谢菲利普
您可以使用display_numbers中的选项pheatmap。例如,
library(pheatmap)
a <- matrix(rnorm(90), 9, 10)
txt <- matrix(sample(letters, replace = TRUE, 90), 9, 10)
pheatmap(a, cluster_rows = F, cluster_cols = F, display_numbers = txt)
Run Code Online (Sandbox Code Playgroud)
结果图:带文本的 pheatmap
如果查看该pheatmap函数的源代码,您会发现,在对数据进行了一些摆弄之后,它将调用该heatmap_motor函数。
看着这个功能(它不是出口,所以你必须键入pheatmap:::heatmap_motor看它的源代码),你会看到它使用功能从grid包绘制热图,因此使用abline或text将无法正常工作,但grid.abline还是grid.text会!
例如(请注意,坐标是通过反复试验过程找到的):
library(pheatmap)
library(grid)
a <- matrix(rnorm(100), 10, 10)
pheatmap(a, cluster_rows = F, cluster_cols = F)
grid.text(1:100, x=rep(seq(0.05, 0.91, length.out=10), 10),
y=rep(seq(0, 1, 0.1)+0.05, each=10))
Run Code Online (Sandbox Code Playgroud)