如何为我的热图创建特定的颜色渐变比例?

How can I create a specific color gradient scale for my heatmap?

我想为我的热图创建这个色标:

  1. [0-49] -> 深绿色

  2. [50-99] -> 绿色

  3. [100-149] -> 淡绿色

  4. [150-199] -> 黄色

  5. [200-299] -> 橙色

  6. [300-…] -> 红色

这是我的数据集的示例:

我已经尝试了下面的代码,但它不起作用:

colfunc <-colorRampPalette(c("darkgreen", "lightgreen", "yellow", "orange", "red"))
ggplot(DATASET, aes(x = BUS_NR, y = MONTH_NR, fill = factor(ALERT_NB)) +
  geom_tile() +
  scale_fill_manual(values = colfunc(300))

关键是定义一个函数,该函数在您的数据集中创建一个新列,定义颜色的 class(在我的例子中为 z)。然后你可以简单地将颜色映射到 class 并绘制它。下次请提供示例数据集。花了很多时间才弄清楚,但现在可以使用了:

library(ggplot2)
x <- 1:10
y <- x*x*x
df <- data.frame(x,y)
cols <- c("1"="darkgreen","2"="green", "3"="lightgreen", "4" = "yellow", "5"="orange", "6"="red")

classof <- function(a){
  if (a<50){
    return(1)
  }
  if (a<100){
    return(2)
  }
  if (a<150){
    return(3)
  }
  if (a<200){
    return(4)
  }
  if (a<300){
    return(5)
  }
  else {
    return(6)
  }
}
z <- c()
for (i in seq(1,length(y))){
  z <- c(z,classof(y[i]))
}

df$z <- z

p <- ggplot(df, aes(x,y))+ geom_point(aes(colour = factor(z)))
p + scale_colour_manual(values=cols)