geom_contour 中的反转图例

Reverse legend in geom_contour

我正在努力寻找正确的解决方案来反转图例,以便红色在底部,绿色在顶部。这是一个简单的例子。

library(ggplot2)
library(dplyr)

x = seq(0.01,1,0.01)
y = seq(0.01,1,0.01)
df <- expand.grid(x = x, y = y)
df <- df %>% mutate(z = x*y/(1 + x))

ggplot(df, aes(x = x, y = y, z = z)) +
  geom_contour_filled(bins = 10) +
  geom_contour(bins = 20, colour = "grey") +
  scale_fill_manual(values = rainbow(20)) 

几个问题:

  1. 您正在使用 20 种颜色来描述 10 个 bin。
  2. 您正在使用整个彩虹作为 red-green 渐变。

建议的解决方法是使用 rainbow() 函数的 endrev 参数。

library(ggplot2)
library(dplyr)

x = seq(0.01,1,0.01)
y = seq(0.01,1,0.01)
df <- expand.grid(x = x, y = y)
df <- df %>% mutate(z = x*y/(1 + x))

ggplot(df, aes(x = x, y = y, z = z)) +
  geom_contour_filled(bins = 10) +
  geom_contour(bins = 20, colour = "grey") +
  scale_fill_manual(values = rainbow(10, end = 0.4, rev = TRUE)) 

reprex package (v2.0.1)

于 2022-05-15 创建

除此之外,您可能需要考虑采用比彩虹具有更好视觉特性的调色板。例如,您真的可以从视觉上区分第 2 到第 4 个绿色垃圾箱吗?具有更好(但不完美)属性的关闭调色板是 viridisLite::turbo(10, begin = 0.5).