A precise & pristine ggplot2 theme with opinionated defaults and an emphasis on typography
theme_ipsum(base_family = "Arial Narrow", base_size = 11, plot_title_family = base_family, plot_title_size = 18, plot_title_face = "bold", plot_title_margin = 10, subtitle_family = base_family, subtitle_size = 12, subtitle_face = "plain", subtitle_margin = 15, strip_text_family = base_family, strip_text_size = 12, strip_text_face = "plain", caption_family = base_family, caption_size = 9, caption_face = "italic", caption_margin = 10, axis_title_family = subtitle_family, axis_title_size = 9, axis_title_face = "plain", axis_title_just = "rt", plot_margin = margin(30, 30, 30, 30), grid = TRUE, axis = FALSE, ticks = FALSE)
[blmcrt]
TRUE
, FALSE
, or a combination of X
, x
, Y
, y
)TRUE
, FALSE
, "xy
"TRUE
add ticksFirst and foremost, Arial Narrow is generally installed by default or readily available on any modern system, so it's "free"-ish; plus, it is a condensed font with solid default kerning pairs and geometric numbers.
The function is setup in such a way that you can customize your own one by just wrapping the call and changing the parameters. See source for examples.
There are distinctions between font names and various devices. Names that work
for display graphics devices and bitmap ones such as png
may not work well
for PostScript or PDF ones. You may need two versions of a font-based
theme function for them to work in a particular situation. This situation
usually only arises when using a newer font with many weights but somewhat
irregular internal font name patterns.
## Not run: ------------------------------------ # library(ggplot2) # library(dplyr) # # # seminal scatterplot # ggplot(mtcars, aes(mpg, wt)) + # geom_point() + # labs(x="Fuel effiiency (mpg)", y="Weight (tons)", # title="Seminal ggplot2 scatterplot example", # subtitle="A plot that is only useful for demonstration purposes", # caption="Brought to you by the letter 'g'") + # theme_ipsum() # # # seminal bar chart # # update_geom_font_defaults() # # count(mpg, class) %>% # ggplot(aes(class, n)) + # geom_col() + # geom_text(aes(label=n), nudge_y=3) + # labs(x="Fuel efficiency (mpg)", y="Weight (tons)", # title="Seminal ggplot2 bar chart example", # subtitle="A plot that is only useful for demonstration purposes", # caption="Brought to you by the letter 'g'") + # theme_ipsum(grid="Y") + # theme(axis.text.y=element_blank()) ## ---------------------------------------------