具有不同颜色的r geom_bar

qxgroojn  于 2024-01-03  发布在  其他
关注(0)|答案(1)|浏览(95)

这是我的数据集。

Color    y       y_min    y_max     x
After   -4.107   -4.986   -3.229    2018
After   -3.395   -4.015   -2.775    2017
After   -2.955   -3.292   -2.618    2016
After   -2.082   -2.406   -1.758    2015
After   -0.993   -1.328   -0.659    2014
Before   0        0        0        2013
Before   0.211   -0.148    0.569    2012
Before   0.125   -0.276    0.526    2011
Before   0.056   -0.565    0.677    2010
Before   0.642    0.0100   1.273    2009
Before   0.429   -0.241    1.099    2008

字符串
我的目标是
1.每个x的误差条
1.覆盖geom_ribbon
1.对于x(Before,2013)和x(After,2013),将误差条和geom_ribbon的颜色不同。所有值(Before,2013)为蓝色,所有值(After,2013)为红色。

我已经试过这个

df %>%
ggplot(aes(x=x, y = y, color= Color) +
  geom_line() +
    geom_point(size =2) +
     geom_errorbar(aes(ymin=y_min, ymax = y_max)) + 
       geom_ribbon(aes(x = x, y = y, ymax = y_max, ymin = y_min, fill = Color), alpha = 0.2) + 
         scale_colour_manual(value = c(Before = "blue", After = "red"))


这是行不通的,任何建议都非常感谢。谢谢。

ua4mk5z4

ua4mk5z41#

为了让两个色带都能在2013年达到“奇点”,你需要在2013年添加一个重复的“After”行。为了让颜色切换,你可以为填充和色标分配不同的颜色。为了让色带以正确的颜色勾勒出来,我们可以在它的颜色上使用after_scale

library(tidyverse)

df %>%
  bind_rows(df %>% filter(x == 2013) %>% mutate(Color = "After")) %>%
  ggplot(aes(x, y, ymin = y_min, ymax = y_max, color = Color)) +
  geom_point() +
  geom_ribbon(aes(fill = Color, color = after_scale(scales::alpha(fill, 1))),
              alpha = 0.2) +
  geom_errorbar(width = 0.1) +
  scale_color_manual(NULL, values = c("blue3", "red3")) +
  scale_fill_manual(NULL, values = c("red3", "blue3")) +
  scale_x_continuous("Year", breaks = 2008:2018) +
  theme_minimal(base_size = 16)

字符串

相关问题