这里的第一个问题!我在 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]
?
谢谢!