0

我正在尝试为两个连续变量(xy)创建一个线图,其中置信区间带有阴影,但线条和阴影具有自定义和匹配的颜色。GGplot 正确地从线条的 viridis 比例中获取(离散)颜色,但我无法将相同的颜色(具有较低的 alpha)映射到我用来绘制置信区间的 geom_ribbon。

根据这篇文章,我尝试过使用 scale_color_manual 但我也无法让它工作(即使我重新编码rej为字符“是”/“否”,或与这些级别的一个因素)。

我还尝试在调用中直接设置filland美学,即colorggplot

my_plot <- ggplot(data = my_data, aes(fill = rej, color = rej))

这是最小的示例:

library(ggplot2)
library(viridis)

my_data <- structure(list(time = c(-0.1, 1.8, 3.7, 5.6, 7.5, 9.4, 11.3, 13.2, 
15.1, 17, -0.1, 1.8, 3.7, 5.6, 7.5, 9.4, 11.3, 13.2, 15.1, 17), value = c(-0.02, 
-0.05, -0.03, 0.03, 0.11, 0.11, 0.06, 0.01, -0.04, -0.18, -0.03, -0.05, -0.01, 
0.06, 0.14, 0.15, 0.09, 0.01, -0.07, -0.19), lower = c(-0.05, -0.12, -0.1, 
-0.05, 0.03, 0.04, -0.02, -0.07, -0.13, -0.33, -0.06, -0.12, -0.1, -0.03, 0.05, 
0.06, 0, -0.08, -0.16, -0.36), upper = c(0.02, 0.01, 0.05, 0.1, 0.18, 0.19, 
0.14, 0.1, 0.04, -0.02, 0.01, 0.03, 0.07, 0.14, 0.22, 0.23, 0.18, 0.1, 0.03, 
-0.01), rej = c(FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, 
FALSE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE)), 
row.names = c(11L, 12L, 13L, 14L, 15L, 16L, 17L, 18L, 19L, 20L, 41L, 42L, 43L, 
44L, 45L, 46L, 47L, 48L, 49L, 50L), class = "data.frame")

my_plot <- ggplot(data = my_data) +
  geom_ribbon(aes(x = time, ymin = lower, ymax = upper, fill = rej), alpha = 0.3) +
  geom_line(aes(x = time, y = value, color = rej), lwd = 3) + # line width increased for visibility
  scale_color_viridis_d(begin = 0, end = 1, option = 'viridis')
my_plot

由于color参数 forgeom_linefill参数 forgeom_ribbon使用相同的变量设置,我希望线条和色带的颜色匹配。我得到的是一个带有线条和色带的图,但色带的颜色与线条的颜色不匹配(这可以通过从上面代码中的参数中删除alpha = 0.3设置来确认):geom_ribbon

色带颜色与线条颜色不匹配

有没有办法让 ggplot 匹配颜色?

4

0 回答 0