如何为我的热图创建特定的颜色渐变比例?
How can I create a specific color gradient scale for my heatmap?
我想为我的热图创建这个色标:
[0-49] -> 深绿色
[50-99] -> 绿色
[100-149] -> 淡绿色
[150-199] -> 黄色
[200-299] -> 橙色
[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)
我想为我的热图创建这个色标:
[0-49] -> 深绿色
[50-99] -> 绿色
[100-149] -> 淡绿色
[150-199] -> 黄色
[200-299] -> 橙色
[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)