Top statutory personal income tax rate and top marginal tax rates for employees - TABLE_I7

Data - OECD

TAX

Code
TABLE_I7 %>%
  left_join(TABLE_I7_var$TAX %>%
              setNames(c("TAX", "Tax")), by = "TAX") %>%
  group_by(TAX, Tax) %>%
  summarise(Nobs = n()) %>%
  arrange(-Nobs) %>%
  {if (is_html_output()) print_table(.) else .}
TAX Tax Nobs
AVG_NAT Average wage in national currency units 874
AVG_PPP Average wage in US dollars based on Purchasing Power Parities 874
PERS_ITAX Personal income tax 874
PER_ARATE Personal income tax & employee social security contributions (All-in rate) 874
THRESHOLD Threshold (expressed as a multiple of the average wage) 874
TOP_TRATE Top tax rates 874

Top Personal Income Tax Rates

Germany

Code
TABLE_I7 %>%
  filter(COU == "DEU",
         TAX %in% c("PERS_ITAX", "PER_ARATE", "TOP_TRATE")) %>%
  year_to_date %>%
  left_join(TABLE_I7_var$TAX %>%
              setNames(c("TAX", "Tax")), by = "TAX") %>%
  ggplot() + geom_line(aes(x = date, y = obsValue/100, color = Tax)) +
  scale_color_manual(values = viridis(4)[1:3]) +
  theme_minimal() +
  scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  theme(legend.position = c(0.65, 0.9),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = 0.01*seq(0, 70, 5),
                     labels = percent_format(accuracy = 1),
                     limits = c(0, 0.7)) + 
  ylab("Tax Rate (%)") + xlab("")

France

Code
TABLE_I7 %>%
  filter(COU == "FRA",
         TAX %in% c("PERS_ITAX", "PER_ARATE", "TOP_TRATE")) %>%
  year_to_date %>%
  left_join(TABLE_I7_var$TAX %>%
              setNames(c("TAX", "Tax")), by = "TAX") %>%
  ggplot() + geom_line(aes(x = date, y = obsValue/100, color = Tax)) +
  scale_color_manual(values = viridis(4)[1:3]) +
  theme_minimal() +
  scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  theme(legend.position = c(0.65, 0.9),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = 0.01*seq(0, 70, 5),
                     labels = percent_format(accuracy = 1),
                     limits = c(0, 0.7)) + 
  ylab("Tax Rate (%)") + xlab("")