The Just Reproducible Enough Research Poster
Reproducibility is important! Critical readers (gotta love them), should be able to get your dataset, run the code you provided, and produce what you showed them. This is certainly true in a paper, but is also a strength in a research poster. An additional benefit is that copy pasting statistics from R into tables and figures for a poster takes forever, and a good reproducible workflow will save you this hassle.
The problem is, posters need to be designed and design is an art. There are lots of people offering latex templates for posters. I have tried them. What usually happens is, I demo the template, it gets me 85% of what I want in 45 minutes and I think ‘this is great – I should use this!’ Then I need to do something that feels very minor, like add my lab’s logo to the poster. This ends up taking 4+ hours and usually ends in copy pasting everything into Inkscape / powerpoint / whatever.
I’ve finally arrived at a workflow for poster generation that I like, and want to share it. The key is, all it needs to be reproducible is code to generate the tables and figures – those have to match. No one cares if they can reproduce your lab’s logo, your author block, whatever. So we use rmarkdown to generate our tables and figures in a word file, and then we import from the pdf into the poster generating tool of choice (I use Inkscape).
If you want to do this, here’s my workflow to generate a loosely #BetterPoster (think, big text/figures in the middle, details in columns around the sides) style poster. I’ve included links to an example poster I have up on github:
- Generate a word template. When rmarkdown generates your document, it will use the styles and page layout in this file to format it. So the template has:
- Appropriate heading styles (you have to use Word’s style feature to define these.)
- Page width equal to the widths of your side columns.
- Page height that is pretty large – bigger than your largest block of text is going be to.
- Next, an Rmarkdown file should generate all of the column text, tables, and column figures.
- Use the text ‘newpage’ between blocks of text.
- If you want big beautiful figures in the middle, define a cairo_pdf device within your code block so the figure gets saved outside the rmarkdown output as a separate file. E.g.:
# Define the device
cairo_pdf(filename="Upset.PDF",
height=16,
width=27.9/2,
pointsize=24,
family="Red hat display")
# Now make the plot:
ggplot(setsdf,aes(x=sets)) +
...
# Turn the device off
dev.off()
- Knit it!
- If you want to adjust anything in the Word output, do so.
- Save the word output as a pdf
- Now, in your poster design software of choice, import the pdf page-by-page. Each block will be its own page. Import the separate figure files separately. Arrange things however you want.
The key here is that the important parts of the poster – tables and figures – are reproducible, but you retain control over the design of the poster. As a bonus, because everything is generated by rmarkdown and saved as pdfs with a defined size, font sizes will be preserved across elements of your poster. This worked really well for me, and felt time efficient. Let me know how this works for you! You can find a copy of the finished poster on the ABCD Missingness project page.