Last updated: January 18, 2021
Getting decent-looking plots with
There’s a list of all the
ggplot2 themes, but I don’t think any of them are great – they all have at least one weird element (no axis lines, hidden axis labels, non-white backgrounds, etc.).
Instead of the defaults, I like using
ggpubr, which provides a nicer set of themes suitable for publications and presentations.
The BBC has a set of defaults for
ggplot2 that is worth looking at.
The default color schemes aren’t great either.
ggsci provides some good alternatives.
The R Graph Gallery is a good resource for good-looking plots.
ggplot GUI is an online interface for dynamically exploring
Sometimes it’s helpful to have ASCII (text-based) plots.
txtplot is a package for doing this:
> library(txtplot) > with(cars, txtplot(speed,dist)) +---+----------+----------+---------+----------+-+ 120 + * + 100 + + | * | 80 + * * * + | * * * | 60 + * * * * + | * * * * * * | 40 + * * * * * + | * * * * * * * * * | 20 + * * * * * * + | * * * | 0 +---+----------+----------+---------+----------+-+ 5 10 15 20 25
Arranging multiple figures
There are a few ways to do this:
See Complete themes – ggplot2.
Tables for publication
tangramis a tool for creating “rich summary tables”.
table1is another interesting package for publication-quality tables.
flextablecan produce well-formatted HTML tables from data frames.
I’ve had great luck with making custom tables for publication with
- Create Awesome HTML Table with knitr::kable and kableExtra
- If you need to use variables inside
add_header_above(), you can use
I was not able to figure out an easy way to reference tables and figures in R Markdown text. The
captioner package is supposed to fix this, but it hasn’t been updated in 3 years so I’m not sure how well it actually works.
ℹ️ This page is part of my knowledge base for R, the popular statistical programming language. I attempt to use idiomatic practices with the
tidyverse collection of packages as much as possible. If you have suggestions for ways to improve this code, please contact me or use the survey link below..