Top 20 ports - passengers embarked and disembarked in each port, by direction - mar_mp_aa_pphd

Data - Eurostat

Info

Last observation: Annual: 2024 (N = 168)

First observation: Annual: 2005 (N = 87)

Last data update: 11 aoû 2026, 19:22. Last compile: 12 aoû 2026, 01:20

Structure

Top 20 Ports: Total Passenger Traffic

Code
mar_mp_aa_pphd |>
  filter(rep_mar == "TOP_20",
         unit == "THS_PAS",
         direct == "TOTAL") |>
  year_to_date() |>
  mutate(values = values/1000) |>
  ggplot() + geom_line(aes(x = date, y = values)) +
  theme_minimal() +
  scale_x_date(breaks = as.Date(paste0(seq(2000, 2100, 2), "-01-01")),
               labels = date_format("%Y")) +
  xlab("") + ylab("Passengers, Top 20 ports (Millions)")

Busiest Individual Ports

Code
mar_mp_aa_pphd |>
  filter(rep_mar %in% c("IT_0ITMSN", "IT_0ITREG", "IT_0ITNAP", "EL_0GRPIR", "FI_0FIHEL"),
         unit == "THS_PAS",
         direct == "TOTAL") |>
  year_to_date() |>
  ggplot() + geom_line(aes(x = date, y = values, color = Rep_mar)) +
  theme_minimal() +
  scale_x_date(breaks = as.Date(paste0(seq(2000, 2100, 2), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.title = element_blank()) +
  xlab("") + ylab("Passengers (Thousands)")

Conteneurs

Table

Code
mar_mp_aa_pphd |>
  filter(unit == "THS_PAS",
         time == "2019") |>
  select( -unit, -time) |>
  
  
  select(-direct) |>
  spread(Direct, values) |>
  arrange(-Total) %>%
  {if (is_html_output()) datatable(., filter = 'top', rownames = F, escape = F) else .}