Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

R plot using tikzDevice in LaTeX document with knitr

I am having a problem making ggplot2, tikzDevice, and knitr working together. I am working with RStudio, and trying to include some R graphics in a Latex document. I used a very simple example:

\documentclass{article} 

\begin{document} 

\begin{figure} 
<<fig1,eval=TRUE,echo=FALSE,dev='tikz'>>= 
library(ggplot2)
library(tikzDevice)
qplot(displ, hwy, data = mpg, colour = factor(cyl)) 
@ 
\end{figure} 

\end{document}

But no pdf is output, and I get the following error message:

Error in getMetricsFromLatex(TeXMetrics) : 
TeX was unable to calculate metrics for the following string
or character:

    hwy

Common reasons for failure include:
  * The string contains a character which is special to LaTeX unless
    escaped properly, such as % or $.
  * The string makes use of LaTeX commands provided by a package and
    the tikzDevice was not told to load the package.

The contents of the LaTeX log of the aborted run have been printed above,
it may contain additional details as to why the metric calculation failed.
Calls: knit ... widthDetails.text -> grid.Call -> <Anonymous> -> getMetricsFromLatex

Execution halted

This problem has been treated here, but the solution proposed does not work for me. Any idea?

like image 458
ben Avatar asked Feb 04 '14 03:02

ben


2 Answers

Perhaps a clash with another package you haven't included in your simple example? For me, I was getting this error message because of some clash between package xcolor and tikz. I was calling xcolor before Tikz, no problem, but as soon as I set dev="tikz" in the chunk options I got the same error as you. As soon as I removed \usepackage{xcolor} everything worked.

like image 74
dmt Avatar answered Oct 14 '22 05:10

dmt


I added in the R code

options(tikzMetricPackages = c("\\usepackage[utf8{inputenc}",
    "\\usepackage[T1]{fontenc}", "\\usetikzlibrary{calc}", "\\usepackage{amssymb}"))

source

like image 32
Betty Sanchez Avatar answered Oct 14 '22 04:10

Betty Sanchez