如何在ggplot中为我的热图创建颜色渐变比例?

问题描述 投票:0回答:1

我想为我的热图创建此色标:

  1. [[0-49]->深绿色
  2. [[50-99]->绿色
  3. [[100-149]->浅绿色
  4. [150-199]->黄色
  5. [[200-299]->橙色
  6. [300-…]->红色

这里是我的数据集的示例:

Dataset

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

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))

请问如何创建适合每种颜色条件的漂亮色阶?

谢谢大家的帮助!

r ggplot2 scale colorbrewer
1个回答
1
投票

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

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)
© www.soinside.com 2019 - 2024. All rights reserved.