我正在尝试修改热图的比例,以geom_raster
使颜色变化发生在数据的子集上,并且该子集之外的任何内容都不会变得更加丰富多彩。
library(tidyverse)
library(viridis)
library(reshape2)
q <- letters[1:5]
w <- rev(letters)[1:5]
x1 <- rnorm(5, 0, 1)
x2 <- rnorm(5, 0, 1)
x3 <- rnorm(5, 0, 1)
x4 <- rnorm(5, 0, 1)
x5 <- rnorm(5, 10, 1)
test.df <- melt(data.frame(q,w,x1,x2,x3,x4,x5))
ggplot(test.df, aes(q,variable,fill=value))+geom_raster()+scale_fill_viridis()
如果你运行它,你会得到这个热图:
.
顶行是“占用”一些颜色范围。由于绝大多数数据在 -2 和 2 之间,我想让它使色阶变化发生在该范围内,而超出该范围的任何东西都只是黄色或紫色。对我来说,任何超过 2 的东西都应该是“非常高”,而任何低于 -2 的东西都应该是“非常低”,但 -2 和 2 之间的数字是我想看到的。
我不认为cut
这是我想要的,因为那时我需要提供一堆颜色,并且我不想删除任何数据或将任何数据更改为某个最大值或类似的值。在命令中设置限制scale_viridis
有助于但删除限制之外的数据。