R - Как я могу создать определенную шкалу градиента цвета для моей тепловой карты? - PullRequest
0 голосов
/ 07 октября 2019

Я хотел бы создать эту цветовую шкалу для моей тепловой карты:

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

Как мне создать красивую цветовую гамму, которая заполняет каждое условие цвета, пожалуйста?

Спасибо всем за помощь!

1 Ответ

1 голос
/ 07 октября 2019

Ключ в том, чтобы определить функцию, которая создает новый столбец в вашем наборе данных, определяющий класс цвета (в моем случае 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)
...