R-如何在行情图中添加线条和文字?

use*_*328 2 r

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()不工作,过度绘图我到目前为止还没有成功。

最好的方法是什么?

谢谢菲利普

zha*_*nxw 6

您可以使用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


nic*_*ico 5

如果查看该pheatmap函数的源代码,您会发现,在对数据进行了一些摆弄之后,它将调用该heatmap_motor函数。

看着这个功能(它不是出口,所以你必须键入pheatmap:::heatmap_motor看它的源代码),你会看到它使用功能从grid包绘制热图,因此使用ablinetext将无法正常工作,但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)