0

我想在 P 值 < 0.05 的热图中加上星号。我有一个单独的电子表格,其中包含我读入 R 的 P 值以及随后的热图,但是,我正在使用的函数似乎没有将星号放在正确的单元格中。例如,在下图中,没有附加到 rho = 0 单元格的 P 值,但那里放置了星号。

图片

电子表格如下所示。对于所有不适用的 P 值,我输入“1”以避免错误。如果在修复星号位置之外有更好的方法来做到这一点,请告诉我。 图片

我正在使用的代码如下:

library(circlize)
library(ComplexHeatmap)
library(Hmisc)

sx_syn_p <- read.csv('spear_synx1_p.csv', header=TRUE)

Shime1x_syn_spearman1 <- Heatmap(sx_syn, circlize::colorRamp2(c(-1, -0.5, 0, 0.5, 1), 
                                                                        c('#d7191c', '#fdae61',
                                                                          '#FFFFFF', '#abd9e9', 
                                                                          '#2c7bb6')),
                                column_names_gp=grid::gpar(fontsize=20,
                                                           col=c(rep('#4daf4a', 8), rep('#984ea3',7))),
                                row_names_gp=grid::gpar(fontsize=20, 
                                                        col=c(rep('#4daf4a', 8), rep('#984ea3',7))),
                                heatmap_legend_param=list(title="Spearman's rho", 
                                                          direction='horizontal',
                                                          at = c(-1, -0.5, 0, 0.5, 1)),
                   cell_fun = function(j, i, x, y, w, h, fill){
                     if(sx_syn_p[i, j] < 0.05) {
                       grid.text('*', x, y)
                     }
                   })
sx_syn1_spear <- draw(Shime1x_syn_spearman1, heatmap_legend_side='top')

我认为函数根据电子表格中的 P < 0.05 输入星号,但输入似乎没有正确放置。

4

1 回答 1

0

我设法通过删除电子表格中的第一列标签并重新运行代码来解决这个问题。我认为将数据框转换为矩阵将根据此示例提供进一步的保证。我的代码的问题是 的顺序sx_synsx_syn_p.

于 2021-11-10T14:47:09.237 回答