我正在寻找价值热图。我希望热图从表示低值的蓝色(示例代码中的 0)变为表示高值的绿色(示例代码中的 75)。但是,数据包含大于 75 的值。我希望任何大于 75 的值都用红色填充。
总而言之,我希望填充从 0 到 75(蓝色)到绿色(绿色),任何大于 75 的值都填充为红色。我现在的代码可以做到这一点,但仍然以 76-100 的值从绿色缩放到红色,而不是让它们全部变成红色。
我在帖子中使用了布莱恩·迪格斯的答案(ggplot2 热图,带有范围值的颜色 https://stackoverflow.com/questions/10981324/ggplot2-heatmap-with-colors-for-ranged-values),但该答案并未涵盖如何填充超出梯度比例上限的所有值。
该帖子(ggplot geom_point() 具有基于特定离散值的颜色 https://stackoverflow.com/questions/29966582/ggplot-geom-point-with-colors-based-on-specific-discrete-values)似乎回答了 geom_point 的一个非常相似的问题,但我在将其适应 geom_tile 时遇到了困难。
我的示例代码如下,感谢任何帮助!
#Check packages to use in library
{
library('ggplot2')
library('scales')
}
#Data
horizontal_position <- c(-2, -1, 0, 1, 2)
vertical_position <- c(-2, -2, -2, -2, -2, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2)
data_val <- sample(0:100, 25)
all_data <-data.frame(horizontal_position, vertical_position, data_val)
all_data %>%
ggplot(aes(horizontal_position, vertical_position)) +
geom_tile(aes(fill = data_val), colour = "transparent") +
geom_text(aes(label = data_val),colour="white")+
scale_fill_gradientn(colours = c("blue", "lightblue", "lightgreen", "green", "red"),
breaks=c(0,25,50,75,Inf),
guide = "colorbar")