The hardware and bandwidth for this mirror is donated by dogado GmbH, the Webhosting and Full Service-Cloud Provider. Check out our Wordpress Tutorial.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]dogado.de.

Visualization

Plotting is a bonus, not the core feature

The primary goal of ervissexplore is to make it easy to retrieve and filter ERVISS data. The plotting functions are provided as a convenience for quick exploration, not as a full-featured visualization framework.

Since the data is returned as a standard data.table, you are free to build any visualization you want using ggplot2 or any other plotting library.

library(ervissexplore)
library(ggplot2)
#> Warning: package 'ggplot2' was built under R version 4.4.3

Built-in plot functions

Each data source has a dedicated plot_*() function and a quick_plot_*() shortcut.

Sentinel test positivity

data <- get_sentineltests_positivity(
  date_min = as.Date("2024-01-01"),
  date_max = as.Date("2024-06-30"),
  pathogen = "SARS-CoV-2",
  countries = c("France", "Germany")
)

plot_erviss_positivity(data, date_breaks = "1 month")

SARS-CoV-2 variants

data <- get_erviss_variants(
  date_min = as.Date("2025-06-01"),
  date_max = as.Date("2025-12-31"),
  variant = c("XFG"),
  countries = c("France", "Belgium")
)

plot_erviss_variants(data, date_breaks = "1 month")

ILI/ARI consultation rates

data <- get_ili_ari_rates(
  date_min = as.Date("2024-01-01"),
  date_max = as.Date("2024-12-31"),
  indicator = "ILIconsultationrate",
  countries = c("France")
)

plot_ili_ari_rates(data, date_breaks = "1 month")

SARI rates

data <- get_sari_rates(
  date_min = as.Date("2024-01-01"),
  date_max = as.Date("2024-12-31"),
  countries = c("Belgium")
)

plot_sari_rates(data, date_breaks = "1 month")

SARI virological data

data <- get_sari_positivity(
  date_min = as.Date("2025-01-01"),
  date_max = as.Date("2025-12-31"),
  pathogen = "Influenza",
  indicator = "positivity",
  countries = c("Belgium")
)

plot_sari_positivity(data, date_breaks = "1 month")

Non-sentinel severity

data <- get_nonsentinel_severity(
  date_min = as.Date("2024-01-01"),
  date_max = as.Date("2024-12-31"),
  pathogen = "SARS-CoV-2",
  indicator = "hospitaladmissions",
  countries = c("EU/EEA"),
  age = "total"
)

plot_nonsentinel_severity(data, date_breaks = "1 month")

Non-sentinel tests/detections

data <- get_nonsentinel_tests(
  date_min = as.Date("2024-01-01"),
  date_max = as.Date("2024-12-31"),
  pathogen = "Influenza",
  indicator = "detections",
  countries = c("France", "Germany")
)

plot_nonsentinel_tests(data, date_breaks = "1 month")

Quick plot shortcuts

The quick_plot_*() functions combine data fetching and plotting in a single call:

# One-liner for ILI rates
quick_plot_ili_ari_rates(
  date_min = as.Date("2024-01-01"),
  date_max = as.Date("2024-12-31"),
  indicator = "ILIconsultationrate",
  countries = c("France"),
  date_breaks = "1 month"
)

You can also use the generic quick_plot_erviss_data():

quick_plot_erviss_data(
  type = "nonsentinel_severity",
  date_min = as.Date("2024-01-01"),
  date_max = as.Date("2024-12-31"),
  pathogen = "SARS-CoV-2",
  indicator = "hospitaladmissions",
  countries = c("France", "Spain"),
  date_breaks = "1 month"
)

Using the generic plot_erviss_data()

The generic function dispatches to the right plot function based on the type parameter:

data <- get_erviss_data(
  type = "sari_rates",
  date_min = as.Date("2025-01-01"),
  date_max = as.Date("2025-12-31"),
  countries = "Spain"
)

plot_erviss_data(data, type = "sari_rates", date_breaks = "1 month")
data <- get_erviss_data(
  type = "positivity",
  date_min = as.Date("2024-01-01"),
  date_max = as.Date("2024-06-30"),
  pathogen = "SARS-CoV-2",
  countries = "EU/EEA",
  indicator = "positivity"
)

plot_erviss_data(data, type = "positivity")

Customizing plots

All plot_*() functions return standard ggplot2 objects. You can modify them freely with any ggplot2 function.

Changing the theme

data <- get_sentineltests_positivity(
  date_min = as.Date("2024-01-01"),
  date_max = as.Date("2024-06-30"),
  pathogen = "SARS-CoV-2",
  countries = c("France", "Germany")
)

plot_erviss_positivity(data) +
  theme_bw() +
  theme(
    legend.position = "top",
    strip.background = element_rect(fill = "steelblue"),
    strip.text = element_text(color = "white", face = "bold")
  )

Modifying axes

plot_erviss_positivity(data) +
  scale_x_date(
    date_breaks = "1 month",
    date_labels = "%d/%m/%Y"
  ) +
  scale_y_continuous(
    limits = c(0, 50),
    breaks = seq(0, 50, 10)
  ) +
  ylab("Positivity (%)")

Adding titles and annotations

plot_erviss_positivity(data) +
  labs(
    title = "My custom title",
    subtitle = "SARS-CoV-2 positivity in France and Germany",
    caption = "Source: ERVISS / EU-ECDC"
  )

Changing colours

data <- get_ili_ari_rates(
  date_min = as.Date("2024-01-01"),
  date_max = as.Date("2024-12-31"),
  indicator = "ILIconsultationrate",
  countries = "France"
)

plot_ili_ari_rates(data) +
  scale_colour_brewer(palette = "Set1", name = "Age group")

Building your own plots from scratch

Since the data is a data.table, you can bypass the built-in plot functions entirely and create exactly the visualization you need:

data <- get_nonsentinel_severity(
  date_min = as.Date("2024-01-01"),
  date_max = as.Date("2024-12-31"),
  pathogen = "SARS-CoV-2",
  indicator = c("hospitaladmissions", "ICUadmissions"),
  age = "total",
  countries = c("France", "Spain")
)

ggplot(data, aes(x = date, y = value, fill = indicator)) +
  geom_col(position = "dodge") +
  facet_wrap(~countryname, scales = "free_y") +
  scale_fill_manual(
    values = c("hospitaladmissions" = "#E69F00", "ICUadmissions" = "#D55E00"),
    labels = c("Hospital admissions", "ICU admissions"),
    name = ""
  ) +
  labs(
    title = "SARS-CoV-2 severity indicators",
    x = NULL,
    y = "Count",
    caption = "Source: ERVISS / EU-ECDC"
  ) +
  theme_minimal() +
  theme(legend.position = "top")
data <- get_ili_ari_rates(
  date_min = as.Date("2024-01-01"),
  date_max = as.Date("2024-12-31"),
  indicator = "ILIconsultationrate",
  age = "total",
  countries = c("Spain", "Austria", "Greece")
)

ggplot(data, aes(x = date, y = countryname, fill = value)) +
  geom_tile() +
  scale_fill_viridis_c(name = "ILI rate") +
  scale_x_date(date_breaks = "1 month", date_labels = "%b") +
  labs(title = "ILI consultation rates across Europe", x = NULL, y = NULL) +
  theme_minimal() +
  theme(axis.text.x = element_text(angle = 45, hjust = 1))

These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.
Health stats visible at Monitor.