For comparing multiple trends over time; useful for directions of changes, not absolute values.
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"))
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)
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)