Add R Plots to LaTeX Documents
Here I am showing how to go from data stored in csv file to a nice plot in a LaTeX document using ggplot2 package from R.
My goal was:
- Import csv file with data
 - Create a plot in R
 - Make this plot available in LaTeX document
 
Prerequisites
- LaTeX is installed – 
sudo apt-get install texlive-full - R is installed – 
sudo apt-get install r-base 
Configuring R
get to R console with R
> install.packages("tikzDevice", "ggplot2")
Making a Plot and Saving it as LaTeX File
Assuming I have a csv file like this:
parser,threads,mph
gnparser,1,21.4
gnparser,2,41.1
gnparser,4,73.8
gnparser,8,89.3
gnparser,12,93.8
gbif,1,23.0
gbif,2,45.5
gbif,4,76.3
gbif,8,111.5
gbif,12,114.6
biodiv,1,4.0
biodiv,2,6.2
biodiv,4,9.2
biodiv,8,10.0
biodiv,12,9.1
These data show parsing millions of names per hour, but in the plot I need data of names parsed per second
plot.R file:
#!/usr/bin/env Rscript
require(ggplot2)
require(tikzDevice)
data <- read.csv("plot.csv")
nps <- function(d) { d * 1000000 / 3600 }
tikz("../../throughput.tex",width=5,height=5)
ggplot(data=data, aes(x=threads, y=nps(mph),
       group=parser, shape=parser)) +
  geom_line(size=0.5) + geom_point(size=3) +
  xlab("CPU Threads") + ylab("Names/Second") +
  scale_shape_discrete(name="Parser",
                       breaks=c("gnparser","biodiversity","gbif-parser")) +
  scale_x_discrete(breaks=seq(0,13,2)) +
  theme(
      legend.key = element_rect(fill = "white"),
      legend.background = element_rect(fill = "white", color="black", size=0.3),
      legend.position = c(0.8,0.35),
      panel.grid.major = element_line(colour = "white"),
      axis.line = element_line(colour = "black"),
      axis.ticks = element_line(colour = "black"),
      axis.text = element_text(colour = "black", size = 10),
      panel.grid.minor = element_blank(),
      panel.background = element_rect(fill = "white")
    )
dev.off()
Update (2020-10-07): I received a feedback that dev.off() is not needed now. More info can be found in this StackOverflow Question
Note the height and width parameters for tikz() function – they were
needed to scale the plot down.  After the file is created it can be included
into a LaTeX document:
...
\usepackage{tikz}
...
\begin{figure}[htbp]
  \begin{center}
    \caption{Names parsed per second by GN, GBIF and Biodiversity parsers (runing on 1-12 parallel threads).
    }\label{figure:throughput}
    \include{throughput}
  \end{center}
\end{figure}
