我正在尝试为 ggplot 的点图设置颜色刻度,标记不适宜、适宜、理想、适宜、不适宜的区域。在您的标准 ggplot 代码包装器内,我已经尝试使用 gradient2
。
scale_colour_gradient2(low = "grey",
mid = "red",
high = "grey",
midpoint = 25) +
以及gradientn
;
scale_colour_gradientn(colours = rev(rainbow(5)),
breaks = seq(0, 30, by = 5),
limits = c(0, 30),
labels = as.character(seq(0, 30, by = 5))) +
步骤n
,
scale_colour_stepsn(colours = c("grey", "blue", "red", "blue", "grey"),
values = scales::rescale(c(0, 22, 25, 26, 29, 40))) +
并分组
scale_colour_binned(type = "viridis",
breaks = c(22, 25, 26, 29),
limits = c(0, 40),
guide = guide_coloursteps(even.steps = FALSE,
show.limits = TRUE)) +
binned
是最接近的,但我不知道如何指定我想要的5个颜色(即不使用viridis
)。 "type"选项的帮助说明是:
返回一个连续的颜色比例尺的函数
但我无法理解和解释为什么需要创建一个连续颜色比例尺的函数,因为我只是想要说(例如)
c("red", "yellow", "green", "yellow", "red")
我感觉可能是我快成功了,但是在某个步骤上有误解(也许是多个地方),或者我使用的方法不对,这与这三个函数都无关。
任何人能否提供建议?
谢谢大家!
编辑:根据威尔的建议更新:将geom_point调用中的值保持不变,即
geom_point(aes(colour = MeanETemp24hU2M), size = 0.5) +
(而不是将它们重新缩放为0:1),以下代码:
scale_colour_stepsn(colours = c("red", "yellow", "green", "yellow", "red"),
limits = c(0, 40),
guide = guide_coloursteps(even.steps = FALSE,
show.limits = TRUE),
breaks = c(0, 22, 25, 26, 29, 40)) +
产生结果:
这很接近,但
A. colors
向量与breaks
不匹配
B. 颜色本身是混合而不是真实的R颜色。使用Will示例的修改:
x <- 1:100
y <- runif(100) * 100
tibble(x, y) %>%
ggplot() +
aes(x = x, y = y, color = y) +
geom_point() +
scale_color_stepsn(
colours = c("red", "yellow", "green", "yellow", "red"),
breaks = c(0, 0.2, 0.4, 0.6, 0.8, 1) * 100)
输出结果:
值正确,与颜色范围对齐(不知道为什么我的相同计算方法没有这个效果),但颜色是淡化的混合色 - 将该图片中的红色与第二张图片的彩虹尾端的红色进行比较。