【问题标题】:ggplot2-How do I use conditional colours in heat mapggplot2-如何在热图中使用条件颜色
【发布时间】:2021-01-24 12:34:49
【问题描述】:

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

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

x <- c(1,2,3,1,2,3,1,2,3)
pathway <- c("a","b","c","a","b","c","a","b","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 的图块,颜色不是渐变的(纯黑色)。

【问题讨论】:

  • 这个? scale_fill_gradient(low ="white", high ="red")
  • 抱歉之前的模棱两可的表达。我已经更新了我的问题的描述。

标签: r ggplot2 colors heatmap


【解决方案1】:

这可以通过将渐变值设置为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")

【讨论】:

  • 感谢您的建议!这就是我所期望的。 :)
猜你喜欢
  • 2018-05-07
  • 2022-07-05
  • 2012-11-09
  • 2022-01-27
  • 2016-07-20
  • 1970-01-01
  • 2023-04-04
  • 1970-01-01
  • 2019-03-08
相关资源
最近更新 更多