BFHtheme streamlines the process of producing ggplot2 graphics that follow the visual identity for Bispebjerg og Frederiksberg Hospital and Region Hovedstaden. The package bundles branded themes, colour palettes, scales, and workflow helpers that keep your plots on-brand with minimal effort.
In this vignette you will learn how to:
| Task | Helpful functions |
|---|---|
| Apply the default styling | theme_bfh() |
| Use branded colour scales | scale_color_bfh(), scale_fill_bfh() |
| Manage fonts and defaults | set_bfh_defaults(), set_bfh_fonts() |
| Browse colours and palettes | bfh_cols(), show_bfh_palettes() |
| Export figures | bfh_save() |
BFHtheme is currently distributed via GitHub. Install the package
with devtools or remotes and then load it
alongside ggplot2:
Start by adding theme_bfh() to any ggplot. It injects
BFH typography, spacing, and colour defaults while leaving your existing
geoms untouched. Fonts are auto-detected the first time you call the
theme.
ggplot(mtcars, aes(x = wt, y = mpg)) +
geom_point() +
labs(
title = "Fuel Efficiency by Vehicle Weight",
x = "Weight (1000 lbs)",
y = "Miles per Gallon"
) +
theme_bfh()Pair the theme with branded colour scales. Use the discrete variants when mapping factors and the continuous versions for numeric gradients.
ggplot(mtcars, aes(x = wt, y = mpg, color = factor(cyl))) +
geom_point(size = 3) +
labs(
title = "Fuel Efficiency by Cylinder Count",
x = "Weight (1000 lbs)",
y = "Miles per Gallon",
color = "Cylinders"
) +
scale_color_bfh() +
theme_bfh()scale_fill_bfh() works the same way for fills (bars,
areas, etc.).
For continuous colour mappings, switch to the gradient helpers:
ggplot(mtcars, aes(x = wt, y = mpg, color = hp)) +
geom_point(size = 3) +
labs(
title = "Fuel Efficiency and Horsepower",
x = "Weight (1000 lbs)",
y = "Miles per Gallon",
color = "Horsepower"
) +
scale_color_bfh_continuous(palette = "blues") +
theme_bfh()The palette argument controls which sequential palette
is used. Reverse the direction with reverse = TRUE when
needed for visual clarity.
Use show_bfh_palettes() to preview every palette side by
side:
| Palette | Description | Recommended for |
|---|---|---|
main |
Core hospital colours | Default discrete scales |
hospital |
Full Bispebjerg & Frederiksberg Hospital palette | Hospital reports |
hospital_blues / hospital_blues_seq |
Monochrome blue gradients | Continuous hospital data |
regionh |
Region Hovedstaden primaries | Region-level reporting |
regionh_blues / regionh_blues_seq |
Navy-focused gradients | Region dashboards |
hospital_infographic,
regionh_infographic |
High-contrast mixes | Infographics and slides |
Access individual colours programmatically:
# Get specific colors
bfh_cols("hospital_primary", "hospital_blue")
#> hospital_primary hospital_blue
#> "#007dbb" "#009ce8"
# Get all colors
head(bfh_cols())
#> hospital_primary hospital_blue hospital_light_blue1
#> "#007dbb" "#009ce8" "#99d8f6"
#> hospital_light_blue2 regionh_grey regionh_dark
#> "#d8eef9" "#646c6f" "#333333"BFHtheme provides several theme variants for different use cases:
theme_bfh() is the all-purpose choice for reports and
dashboards.
ggplot(mtcars, aes(x = factor(cyl), fill = factor(cyl))) +
geom_bar() +
labs(title = "Vehicle Count by Cylinder") +
scale_fill_bfh() +
theme_bfh()You can customize theme_bfh() for specific use cases by
adding additional theme() calls after applying the base
theme.
# Example: Create a dark theme variant
ggplot(mtcars, aes(x = wt, y = mpg)) +
geom_point(color = "white") +
labs(title = "Custom Dark Theme") +
theme_bfh() +
theme(
plot.background = element_rect(fill = "#1a1a1a", color = NA),
panel.background = element_rect(fill = "#1a1a1a", color = NA),
text = element_text(color = "white"),
axis.text = element_text(color = "grey80")
)# Example: Create a minimal variant without gridlines
ggplot(mtcars, aes(x = wt, y = mpg)) +
geom_point() +
labs(title = "Custom Minimal Theme") +
theme_bfh() +
theme(
panel.grid.major = element_blank(),
panel.grid.minor = element_blank()
)Call set_bfh_defaults() at the start of a session to
make BFH styling the global ggplot2 default. This updates the active
theme and seed colours for common geoms.
# Set BFH theme and colors as defaults
set_bfh_defaults()
# Now all plots automatically use BFH styling
ggplot(mtcars, aes(x = wt, y = mpg)) +
geom_point()
# For plots with color mappings, still add the scale manually
ggplot(mtcars, aes(x = wt, y = mpg, color = factor(cyl))) +
geom_point() +
scale_color_bfh()
# Reset to ggplot2 defaults when done
reset_bfh_defaults()Remember to reset the defaults before working on non-BFH projects.
bfh_save() wraps ggplot2::ggsave() with
BFH-friendly presets so exported figures drop straight into reports and
slides.
p <- ggplot(mtcars, aes(x = wt, y = mpg)) +
geom_point() +
theme_bfh()
# Save with preset dimensions
bfh_save("plot.png", p, preset = "report_full")
# Custom dimensions
bfh_save("plot.pdf", p, width = 8, height = 6, dpi = 600)Inspect the recommended sizes programmatically:
Consistent typography is central to the BFH visual language. The package detects the best available font in this order:
Check which fonts are available on your machine:
If you install new fonts during a session, run
clear_bfh_font_cache() or call
get_bfh_font(force_refresh = TRUE) to re-detect them.
Set up fonts and update ggplot defaults in one go:
Need Roboto? install_roboto_font() prints step-by-step
installation guidance.
vignette("customization")
(advanced theme tweaks, palettes, and layout helpers).vignette("theming").help(package = "BFHtheme") or ?theme_bfh.