For comparing multiple trends over time; useful for directions of changes, not absolute values.

Sample Data

If your data is “wide” (each row might contain multiple observations taken at the same time),
we need it to be made “tall” (each row is exactly one data-point).
If you already have tall data, just skip the pivot_longer().

revenue_data <- data.frame(year=2019:2021,
                     overall=c(28.8,19.31,17.1),
                     deu=c(5.51, 4.16, 2.23),
                     gbr=c(5.51, 2.65, 3.56),
                     esp=c(2.35, 1.34, 1.58)) %>%
  pivot_longer(!year, names_to="market", values_to="revenue") %>%
  mutate(market=factor(market,
                       levels=c("deu","gbr","esp","overall")))

labels <- as_labeller(c("deu"="Germany",
                        "gbr"="the UK",
                        "esp"="Spain",
                        "overall"="the Entire EU"))

Plot

Base Plot

ggplot(revenue_data, aes(x=year, y=revenue)) +
  geom_line() +
  facet_grid(rows=vars(market), scale="free", labeller = labels) +
  scale_x_continuous(breaks = seq(2019, 2021, by = 1)) +
  scale_y_continuous(expand = c(0.2,0.2)) +
  coord_cartesian(xlim=c(2019,2021)) +
  labs(title="Revenues decreased in 2020-2021",
       subtitle="in European Markets, compared to 2019",
       y="Revenue (billion Euro)") +
  theme_minimal() +
  theme(aspect.ratio = 1/4)

With Extra Fluff

my_color <- "#233F7D"

ggplot(revenue_data, aes(x=year, y=revenue)) +
  geom_line(linewidth=1.2, color=my_color) +
  geom_point(data = dplyr::filter(revenue_data, year!=2020),
             size=2, color=my_color) +
  geom_text(data = dplyr::filter(revenue_data, year!=2020),
            aes(label=revenue),
            hjust = rep(c(1.2,-0.2), each=4),
            color = my_color,
            size = 5) +
  facet_grid(rows=vars(market), scale="free", labeller = labels) +
  scale_x_continuous(breaks = seq(2019, 2021, by = 1),
                     expand = c(0.3,0.3)) +
  scale_y_continuous(expand = c(0.2,0.2)) +
  coord_cartesian(xlim=c(2019,2021)) +
  labs(title=stringr::str_interp("<span style='color:${my_color}'>**Revenues decreased**</span> in 2020-2021"),
       subtitle="in European Markets, compared to 2019",
       y="Revenue (billion Euro)") +
  theme_minimal() + 
  theme(plot.title=element_markdown(size=18, color='#535353'),
        plot.subtitle=element_text(size=14),
        strip.text.y = element_text(angle = 0, size = 14, hjust=0, color='#818181'),
        text = element_text(color='#818181'),
        panel.grid = element_blank(),
        axis.ticks.y = element_blank(),
        axis.text.y = element_blank(),
        axis.title.x = element_blank(),
        aspect.ratio = 1/4)