簡體   English   中英

ggplot2:用geom_ribbon標記年份

[英]ggplot2: Mark years with geom_ribbon

我有一個看起來像這樣的數據集:

library(tidyverse)

df  <- tribble(
  ~year, ~value, ~dummy,
  #--|--|----
  2003, 3, 0,
  2004, 4, 0,
  2005, 7, 1,
  2006, 9, 1,
  2007, 15, 1,
  2008, 17, 0,
  2009, 7, 0,
  2010, 8, 0,
  2011, 8, 0,
  2012, 7, 0,
  2013, 2, 0,
  2014, 9, 1,
  2015, 5, 0
)

我正在嘗試繪制value系列,並在背景中的灰色長條中標記為dummy == 1 (像這樣

我在將正確的年份傳遞給R時遇到了麻煩。我嘗試了以下操作,但是它不起作用:

dummy_years <- df$year[df$dummy == 1]

ggplot(df , aes(x = year)) +
  geom_ribbon(aes(x = dummy_years, ymin = -Inf, ymax = Inf)) +
  geom_line(aes(y = value))

我得到: Error: Aesthetics must be either length 1 or the same as the data (13): x, ymin, ymax

我們可以使用geom_rect ,由dummy填充,並使用scale_fill_manual

library(ggplot2)
ggplot(df) +
    geom_line(aes(year, value)) +
    geom_rect(aes(ymax = Inf, 
                  ymin = -Inf, 
                  xmin = year, 
                  xmax = year + 1, 
                  fill = factor(dummy)), 
              alpha = .5, 
              show.legend = FALSE) +
    scale_fill_manual(values = c('transparent', 'grey45')) +
    theme_minimal()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM