0

这里的第一个问题!我在 R 中制作了一个调色板:

my_pal <- colorRampPalette( c("darkolivegreen", carto_pal(7, "ArmyRose"), "palevioletred3") )

我用这个heatmap.2()函数绘制了一个热图,使用我的调色板函数生成 825 种颜色col = my_pal(825)。但是,由 生成的图例键heatmap.2()不符合我的口味,我想生成一个自定义图例来代表 Z 分数。我遇到了ComplexHeatmap手册并成功绘制了一个从-2到2值的图例:

library(ComplexHeatmap)
library(circlize)

col_fun = colorRamp2( seq(-2,2, by=4/824), pal(825) )
lgd = Legend(col_fun = col_fun, title = "Z-score", title_position = "lefttop-rot")

pushViewport(viewport(width = 0.9, height = 0.9)) 
grid.rect() 
draw(lgd, x = unit(0.5, "npc"), y = unit(0.5, "npc"), just="centre")

从这里可以看出: 从 -2 到 +2 的图例

但是,我无法生成相同的图例,其值范围为 -3 到 3,因为四肢四舍五入为偶数(-4 到 +4)。我试过:

library(ComplexHeatmap)
library(circlize)

col_fun = colorRamp2( seq(-3,3, by=6/824), pal(825) )
lgd = Legend(col_fun = col_fun, title = "Z-score", title_position = "lefttop-rot")

pushViewport(viewport(width = 0.9, height = 0.9)) 
grid.rect() 
draw(lgd, x = unit(0.5, "npc"), y = unit(0.5, "npc"), just="centre")

但结果如下: 从 -3 到 +3 的图例被绘制为 -4 到 +4

我还尝试手动指定要在图例中显示的数字:

col_fun = colorRamp2( c(-3, -1.5, 0, 1.5, 3), pal(825)[seq(1,825, by=825/5)] )

col_fun = colorRamp2( c(-3, -2, -1, 0, 1, 2, 3), pal(825)[seq(1,825, by=825/7)] )

但是结果与第二个链接中的结果相同。有没有办法绘制从-3到+3的图例,其中-3对应于我的pal(825)[1]颜色,+3对应于那个pal(825)[825]

谢谢!

4

0 回答 0