IBM has a— dubbed “Plex” — and has released them with a generous open license. IBM Plex Sans is not too shabby:
(that image was grifted from a Font Squirrel preview page)
The digit glyphs are especially nice for charts and the font iself is just different enough from Helvetica that I felt it was worth including in
hrbrthemes?. I converted the fonts to TTF (for best compatibility with R ‘stuff’), added them to the package (so you can install them from there), cloned the other ipsum functions into
_ps versions and tried to figure out the best fonts for various theme elements. Here’s the result so far:
(I really like those digits.)
I haven’t tried
theme_ipsum_ps() on anything but macOS, so if you kick the tyres and encounter problems, please file an issue.
Flushing ticks’ text
Readers with keen eyes will see that the axis text labels have different
hjust settings on the ends (vs the
0.5 in the inner ones. I don’t always set them that was as it is not always appropriate to do so (IMO). When I do, it’s usually been a “figure out the breaks and then hand-craft the
theme() components” endeavour. Well, not anymore (at least in simple cases) thanks to the new
It’s a dead-simple process but it requires knowing the breaks and you pretty much have to build the plot to do that, so the function takes your completed ggplot2 object, introspects it (post-temporary build) and sets the tick text justification in the style seen in the above image. The code below generates that image and demonstrates use of
library(hrbrthemes) library(ggplot2) ggplot(mpg, aes(displ, hwy)) + geom_jitter(aes(color=class, fill=class), size=3, shape=21, alpha=1/2) + scale_x_continuous(expand=c(0,0), limits=c(1, 8), breaks=1:8) + scale_y_continuous(expand=c(0,0), limits=c(10, 50)) + scale_color_ipsum() + scale_fill_ipsum() + facet_wrap(~class, scales="free") + labs( title="IBM Plex Sans Test", subtitle="This is a subtitle to see the how it looks in IBM Plex Sans", caption="Source: hrbrthemes & IBM" ) + theme_ipsum_ps(grid="XY", axis="xy") + theme(legend.position="none") -> gg flush_ticks(gg)
As indicated, this won’t presently work for free-scales but it’s going to save me a few minutes for each plot I would have done the more manual way. But, releasing it into the wild will help catch edge cases I haven’t considered yet. In the coming weeks,
I’m going to add I’ve added an option to
flush_ticks() to generate
theme(axis.text...) statements vs just return the plot so you can include the
theme() code directly vs have to rely on the function to display the plot. I may even make it an RStudio addin (though folks who would like to do that are encouraged to submit a PR).
I hope both new
hrbrthemes features are useful to folks and they should be on CRAN in mid-December with an R markdown set of themes to go with the package.