带有颜色渐变的图例/比例从某个值开始 - 定义比例中断

时间:2021-01-22 11:40:22

标签: r ggplot2 legend

我想为现成的热图图获得一个自定义的图例,因为它的范围从 01 灰度,但值在 之前0.01 保持白色,上面没有任何颜色渐变。设法为热图图表执行此操作,但找不到图例的任何接近示例。

这是我的代码:

> ggplot(heatmap,aes(Colour, Group, fill=p.value))+
+ scale_fill_gradientn(colours= c("white","gray","black"), values=c(0,0.011,1), breaks=c(0,0.01,0.25,0.5,0.75,1), guide=guide_colorbar(frame.colour="black"))+
+ geom_tile() + theme_bw()+ theme(legend.key.height=unit(4.5,"cm"))

以及热图图的屏幕截图:

heatmap

有什么建议吗?

更新: 我将第二种颜色从“灰色”替换为“gray95”,它看起来比显示的图表略好。将灰色的起始区域延迟到 0.01 以上(与所示图中的图例相比,灰色在 0.01 之前的某处开始)。感谢@Nate 和@tjebo 对此的建议!不过,我们仍然欢迎任何有用的建议。

另外,只是想澄清一下,我使用“白色”作为特定情况的表示,其中“白色”颜色不打算在图例的颜色渐变范围内。

1 个答案:

答案 0 :(得分:1)

这是一个小的解决方法 - 使用“白色”两次,然后从第二个位置开始渐变。请注意,您需要先将值重新调整为 0:1,另请参阅 ?scale_color_gradientn

library(tidyverse)
vals <- c(0, 2, 4, 10)
newvals <- scales::rescale(vals, to = 0:1)
ggplot(iris, aes(Sepal.Length, Sepal.Width, color = Petal.Length)) +
  geom_point() +
  scale_color_gradientn(colours = c("white", "white", "grey", "black"),
                        values = newvals,
                        breaks = vals, 
                        limits = c(0,10))

放大,带有黑色刻度。您可以看到灰色渐变从 2 正上方开始 enter image description here