[R] tikzDevice and Sweave

Duncan Murdoch murdoch.duncan at gmail.com
Mon Jan 18 13:30:43 CET 2016


On 18/01/2016 6:12 AM, Naresh Gurbuxani wrote:
> Duncan,
>
> Many thanks for looking at my code and for your suggestion.
>
> Your solution works.  But my problem is different.  This code gives me a tex file with a lot of tikz code.  If there are several graphs in the document, then tex file become very large.  I would like the code to result in a pdf file for each graph.  When this pdf file is included in the tex file, the tex file is more readable.

You probably don't want to do that -- tikz outputs LaTeX code, so you'd 
need to run pdflatex once in every figure in your document.  And you 
probably shouldn't care:  when using Sweave, the .tex file is not really 
of interest.  Concentrate on the .Rnw file as the source file.
However, sometimes you need to deal with other people...

You can easily redirect tikz output to a file, and \input{} that file. 
Just change the figure chunk to

<<name = tikzFig, echo = FALSE, results = tex>>=
library(tikzDevice)
# added height and width
tikz(file = "tikzFig.tex", width = 4, height = 3)
plot(sin, -pi, 2*pi, main = "A stand alone TikZ plot", xlab = "x", ylab 
= "sin(x)")
dummy <- dev.off()
cat("\\input{tikzFig.tex}")
@

As mentioned, this is a bit simpler in knitr.

Duncan Murdoch

> Naresh
>
> ----------------------------------------
>> From: dulcalma at bigpond.com
>> To: r-help at r-project.org
>> Date: Mon, 18 Jan 2016 14:17:42 +1000
>> Subject: Re: [R] tikzDevice and Sweave
>>
>> Hi
>>
>> I use Sweave and some tikz in latex but not in Sweave
>>
>> Your problem is that you left out Sweave in the preamble
>> It must be in the preamble of any Sweave document
>>
>> I added sizing so that it is not off the page.
>> I do not know if Sweave options will cover this or you have to set it.
>> eg
>> \setkeys{Gin}{width=1.0\textwidth}
>>
>> \documentclass{article}
>> \usepackage{tikz}
>> \usepackage{Sweave}
>>
>> \begin{document}
>>
>> Figure~\ref{tikzExampleFig} is an example of \texttt{tikzDevice} package.
>>
>> \begin{figure}
>> \begin{center}
>>
>> <<name = tikzFig, echo = FALSE, results = tex>>=
>> # % <<name = tikzFig, echo = FALSE, fig = TRUE>>=
>>
>> # %<<tikzFig, echo = FALSE, fig = TRUE>>=
>> # setwd("/Users/nareshgurbuxani/Documents/tex/tikz")
>> library(tikzDevice)
>>
>> # added height and width
>> tikz(console = TRUE, width = 4, height = 3)
>> plot(sin, -pi, 2*pi, main = "A stand alone TikZ plot", xlab = "x", ylab =
>> "sin(x)")
>> dummy <- dev.off()
>> @
>>
>> \caption{Example of tikz graph}
>> \label{tikzExampleFig}
>> \end{center}
>> \end{figure}
>>
>> \end{document}
>>
>> If this is an example for a larger document then have a look at the latex
>> hyperref package
>>
>> Regards
>>
>> Duncan
>>
>> Duncan Mackay
>> Department of Agronomy and Soil Science
>> University of New England
>> Armidale NSW 2351
>> Email: home: mackay at northnet.com.au
>>
>> -----Original Message-----
>> From: R-help [mailto:r-help-bounces at r-project.org] On Behalf Of Naresh
>> Gurbuxani
>> Sent: Monday, 18 January 2016 06:54
>> To: R-help at r-project.org
>> Subject: Re: [R] tikzDevice and Sweave
>>
>> Resending as a useable example
>>
>> \documentclass{article}
>> \usepackage{tikz}
>>
>> \begin{document}
>>
>> Figure~\ref{tikzExampleFig} is an example of \texttt{tikzDevice} package.
>>
>> \begin{figure}
>> \begin{center}
>>
>> <<name = tikzFig, echo = FALSE, results = tex>>=
>> # % <<name = tikzFig, echo = FALSE, fig = TRUE>>=
>>
>> # %<<tikzFig, echo = FALSE, fig = TRUE>>=
>> # setwd("/Users/nareshgurbuxani/Documents/tex/tikz")
>> library(tikzDevice)
>>
>> tikz(console = TRUE)
>> plot(sin, -pi, 2*pi, main = "A stand alone TikZ plot", xlab = "x", ylab =
>> "sin(x)")
>> dummy <- dev.off()
>> @
>>
>> \caption{Example of tikz graph}
>> \label{tikzExampleFig}
>> \end{center}
>> \end{figure}
>>
>> \end{document}
>>
>> ----------------------------------------
>>> Subject: Re: [R] tikzDevice and Sweave
>>> To: naresh_gurbuxani at hotmail.com; r-help at r-project.org
>>> From: murdoch.duncan at gmail.com
>>> Date: Sun, 17 Jan 2016 15:40:24 -0500
>>>
>>> On 17/01/2016 3:25 PM, Naresh Gurbuxani wrote:
>>>> I want to use tikz() function in tikzDevice package so that it generates
>> a pdf file to be included in the bigger tex file. Below code works, but
>> directly inserts tikz commands in the output tex file.
>>>> This works:
>>>> <<name = tikzFig, echo = FALSE, results = tex>>=
>>>> This does not work:
>>>> <<name = tikzFig, echo = FALSE, fig = TRUE>>=
>>>> Full code is given below:
>>>> \documentclass{article}\usepackage{tikz}
>>>> Figure~\ref{tikzExampleFig} is and an example of \texttt{tikzDevice}
>> package.
>>>> \begin{figure}\begin{center}
>>>> <<name = tikzFig, echo = FALSE, results = tex>>=
>>>> library(tikzDevice)tikz(console = TRUE)plot(sin, -pi, pi, main = "A stand
>> alone TikZ plot", xlab = "x", ylab = "sin(x)")dummy <- dev.off()@
>>>> \caption{Example of tikz
>> graph}\label{tikzExampleFig}\end{center}\end{figure}
>>>> \end{document}
>>>
>>> Your example isn't usable -- please post in plain text, not HTML.
>>>
>>> I can't tell whether you are trying to use Sweave or knitr. If you're
>>> using knitr, see the discussion of dev = "tikz" in
>>> <http://yihui.name/knitr/>. If you're using Sweave, you probably need
>>> pgfSweave.
>>>
>>> Duncan Murdoch
>>>
>>
>> ______________________________________________
>> R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see
>> https://stat.ethz.ch/mailman/listinfo/r-help
>> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
>> and provide commented, minimal, self-contained, reproducible code.
>>
>> ______________________________________________
>> R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see
>> https://stat.ethz.ch/mailman/listinfo/r-help
>> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
>> and provide commented, minimal, self-contained, reproducible code.
>   		 	   		
> ______________________________________________
> R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
>



More information about the R-help mailing list