使用例如将不同的叠加层名称添加到图表alpha或scale_alpha_manual

时间:2019-07-18 20:37:07

标签: r ggplot2

我有一个图,并向其中添加了两个geom_rect叠加层。该图是一个时间轴,两个覆盖图应该表示为提供时间轴上下文而发生的事件。

我的数据如下:

> glimpse(pdata_world)
Observations: 108
Variables: 2
$ date             <date> 2019-04-01, 2019-04-02, 2019-04-03, 2019-04-04, 2019-04-05, 2019-04-06, 2019-04-07, 2019-04-08, 2019-04-09…
$ organic_installs <dbl> 1572, 1593, 2391, 2857, 2015, 2677, 3800, 3308, 855, 2122, 4420, 2979, 4324, 4532, 3775, 3490, 3487, 3605, …
> glimpse(usa_launch_overlay)
Observations: 1
Variables: 2
$ start <date> 2019-05-28
$ end   <date> 2019-05-30
> glimpse(marketing_campaign_overlay)
Observations: 1
Variables: 2
$ start <date> 2019-06-24
$ end   <date> 2019-07-17

这是我的情节:

pdata_world %>%
  ggplot(aes(x = date, y = organic_installs)) +
  geom_line() +
  geom_rect(data = marketing_campaign_overlay, inherit.aes = F,
            aes(xmin = start, xmax = end,
                ymin = -Inf, ymax = Inf,
                alpha = "Marketing Campaign"),
            fill = "black") +
  geom_rect(data = usa_launch_overlay, inherit.aes = F,
            aes(xmin = start, xmax = end,
                ymin = -Inf, ymax = Inf,
                alpha = "USA Launch"),
            fill = "blue") +
    scale_alpha_manual(name = '', values = c("USA Launch" = 0.1, "Marketing Campaign" = 0.1))

除了两个图例的颜色均为蓝色之外,我与我想要的非常接近,因此很难区分哪个是: enter image description here

“营销活动”和“美国发射”叠加层在图例上均为蓝色,如何控制它们以使美国发射场在图例中变为蓝色(如图表所示),而营销活动叠加层则如图所示为黑色?

1 个答案:

答案 0 :(得分:0)

我不会那样使用alpha比例尺。实际上,您应该会收到关于它的警告消息。

我将改用填充比例,将alpha设置为美学贴图之外的合适水平。像这样:

pdata_world %>%
  ggplot(aes(x = date, y = organic_installs)) +
  geom_line() +
  geom_rect(data = marketing_campaign_overlay, inherit.aes = F,
            aes(xmin = start, xmax = end,
                ymin = -Inf, ymax = Inf,
                fill = "Marketing Campaign"),
            alpha = 0.1) +
  geom_rect(data = usa_launch_overlay, inherit.aes = F,
            aes(xmin = start, xmax = end,
                ymin = -Inf, ymax = Inf,
                fill = "USA Launch"),
            alpha = 0.1) +
    scale_fill_manual(name = element_blank(), values = c("USA Launch" = "yellow", "Marketing Campaign" = "purple"))