Over a million developers have joined DZone.
Platinum Partner

Removing White Space Around R Figures

· Big Data Zone

The Big Data Zone is presented by Exaptive.  Learn how rapid data application development can address the data science shortage.

When I want to insert fig­ures gen­er­ated in R into a LaTeX doc­u­ment, it looks bet­ter if I first remove the white space around the fig­ure. Unfor­tu­nately, R does not make this easy as the graphs are gen­er­ated to look good on a screen, not in a document.

There are two things that can be done to fix this problem.

First, you can reduce the white space gen­er­ated by R. I use the fol­low­ing func­tion when sav­ing fig­ures in R.

savepdf <- function(file, width=16, height=10)
{
  fname <- paste("figures/",file,".pdf",sep="")
  pdf(fname, width=width/2.54, height=height/2.54,
      pointsize=10)
  par(mgp=c(2.2,0.45,0), tcl=-0.4, mar=c(3.3,3.6,1.1,1.1))
}

The width and height are in cen­time­tres. The ratio is about right for a beamer pre­sen­ta­tion, and also to fit two fig­ures on an A4 page.

Then I use the commands

savepdf("filename")
# Plotting commands here
dev.off()

That will gen­er­ate a pdf fig­ure of about the right size and shape for a doc­u­ment, and with nar­row mar­gins of white space, and save it in my fig­ures sub-​​directory.

The sec­ond trick is to trim the pdf files so there is no white space left. On a unix sys­tem, this is eas­ily achieved as follows.

pdfcrop filename.pdf filename.pdf

There are prob­a­bly win­dows and mac ver­sions of the same, but I haven’t used them. Adobe Acro­bat will also crop pdfs, but not from the com­mand line as far as I know.

To apply pdfcrop to every file in a direc­tory (using unix), save the fol­low­ing to a file called cropall.sh:

#!/bin/bash
 
for FILE in ./*.pdf; do
  pdfcrop "${FILE}" "${FILE}"
done

Make the file exe­cutable and run it.

In my post on Make­files, I explain how to include pdfcrop within a Makefile.

If you just use pdfcrop with­out first reduc­ing the white space in R, the pro­por­tions come out a lit­tle odd. So I tend to use both approaches together.

The Big Data Zone is presented by Exaptive.  Learn about how to rapidly iterate data applications, while reusing existing code and leveraging open source technologies.

Topics:

Published at DZone with permission of Rob J Hyndman , DZone MVB .

Opinions expressed by DZone contributors are their own.

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}