ggplot2-如何在热图中使用条件色

问题描述

我正在寻找一种制作像这样的情节的方法enter image description here

这是我的R代码,用于绘制此热图。但是,它不起作用。

x <- c(1,2,3,1,3)
pathway <- c("a","b","c","a","c")
value <- runif(9)

jet.colors <-colorRampPalette(c("#FE2423","#F56C76","#FCBEC3","#FEE4E6","#FFFFFF"))
nbcol <- 50
color <- jet.colors(nbcol)


ggplot(data,aes(x=x,y=pathway,fill=value)) + 
  geom_tile() +
  scale_fill_gradientn(colours = ifelse(value<0.2,color,"black"))

我期望的是,对于值小于或等于0.2的图块,颜色逐渐从红色变为白色。对于值大于0.2的图块,颜色不是渐变的(纯黑色)。

解决方法

这可以通过将渐变的值设置为values=c(0,0.2),将颜色设置为红色和白色以及na.value="black"来实现。为了使示例更加有趣,我添加了一些其他数据。 (;

# Packages ----------------------------------------------------------------
library(ggplot2)

set.seed(42)

data <- data.frame(x = rep(1:100,each = 100),pathway = rep(1:100,100),value = runif(100 * 100))

ggplot(data,aes(x=x,y=pathway,fill=value)) + 
  geom_tile() +
  scale_fill_gradientn(breaks = seq(0,1,.2),values = c(0,0.2),colors = c("#FE2423","#FFFFFF"),na.value = "black")