Skip to content

Instantly share code, notes, and snippets.

@charliejhadley
Created October 13, 2022 20:06
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save charliejhadley/e1d914477cee773b655e33bc8c596cf7 to your computer and use it in GitHub Desktop.
Save charliejhadley/e1d914477cee773b655e33bc8c596cf7 to your computer and use it in GitHub Desktop.
waterfall-chart
library(tidyverse)
data_waterfall_raw <- read_csv("waterfall.csv")
data_waterfall_clean <- data_waterfall_raw %>%
mutate(order = row_number()) %>%
mutate(event = str_wrap(event, 12)) %>%
mutate(event = fct_reorder(event, order)) %>%
mutate(
end = cumsum(change),
start = lag(end, default = 0),
)
data_waterfall_clean <- data_waterfall_clean %>%
mutate(fill_type = case_when(
event == "Last year's\ncash" ~ "grey70",
event == "End Cash" ~ "grey30",
change <= 0 ~ "darkred",
change >= 0 ~ "darkolivegreen3"
))
data_waterfall_clean %>%
ggplot() +
geom_hline(yintercept = 0) +
geom_rect(aes(ymin = start,
ymax = end,
xmin = order - 0.45,
xmax = order + 0.45,
x = event,
fill = fill_type
)) +
scale_fill_identity(name = "") +
labs(x = "") +
theme(legend.position = "top")
event change
Last year's cash 2000
Sales 3400
Refunds -1100
Payouts -100
Court Losses -6600
Court Wins 3800
Contracts 1400
End Cash -2800
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment