Skip to content

using Sweave, how to save a plot in a given size

9 messages · Wolfgang Raffelsberger, Lore M, ONKELINX, Thierry +1 more

#
Hi I do somthing like:

\SweaveOpts{prefix.string=proj1}

<<label=fig1,fig=T,include=F,width=8, height=12>>=
plot(1:10)
@

\begin{figure}
\includegraphics {proj1-fig1}           %% show
\label{..}
\end{figure}


Wolfgang


Lore M a ?crit :

  
    
1 day later
#
Dear Lore,

The easiest thing to do is to write a function that saves your plot to a file and generates the latex code.

<<label=fig1, fig=FALSE, result = tex>>=
pdf("fig1.pdf", width = wid, heigth = hei)
	plot(1:10)
dev.off()
cat("\begin{figure}\")
cat("\includegraphics[width = ", wid, ", height = ", hei, "]{proj1-fig1}\"}
cat("\end{figure}")
@

HTH,

Thierry

----------------------------------------------------------------------------
ir. Thierry Onkelinx
Instituut voor natuur- en bosonderzoek / Research Institute for Nature and Forest
Cel biometrie, methodologie en kwaliteitszorg / Section biometrics, methodology and quality assurance
Gaverstraat 4
9500 Geraardsbergen
Belgium 
tel. + 32 54/436 185
Thierry.Onkelinx at inbo.be 
www.inbo.be 

To call in the statistician after the experiment is done may be no more than asking him to perform a post-mortem examination: he may be able to say what the experiment died of.
~ Sir Ronald Aylmer Fisher

The plural of anecdote is not data.
~ Roger Brinner

The combination of some data and an aching desire for an answer does not ensure that a reasonable answer can be extracted from a given body of data.
~ John Tukey

-----Oorspronkelijk bericht-----
Van: r-help-bounces at r-project.org [mailto:r-help-bounces at r-project.org] Namens Lore M
Verzonden: woensdag 15 april 2009 13:46
Aan: wolfgang.raffelsberger at igbmc.fr; R Help
Onderwerp: Re: [R] using Sweave, how to save a plot in a given size


Yes it works, but I still have a problem.
The thing is that I know the dimensions of my plot but in the R code, not in the latex code. So I tried to do :

\SweaveOpts{prefix.string=proj1}

<<label=fig1,fig=T,include=F,width=\Sexpr{wid}, height=\Sexpr{hei}>>=
plot(1:10)
@

\begin{figure}
\includegraphics {proj1-fig1}           %% show
\end{figure}

But Latex doen't find the value of "wid" and "hei" when it creates the chunk code. But in the Latex code, it works and I do have the right value for "wid" and "hei".

Lore.
_________________________________________________________________

[[elided Hotmail spam]]



Dit bericht en eventuele bijlagen geven enkel de visie van de schrijver weer 
en binden het INBO onder geen enkel beding, zolang dit bericht niet bevestigd is
door een geldig ondertekend document. The views expressed in  this message 
and any annex are purely those of the writer and may not be regarded as stating 
an official position of INBO, as long as the message is not confirmed by a duly 
signed document.
#
Lo_Lo wrote:
Here's a couple of pointers for using figures in Sweave that might help you
out.

1. Only one plot per figure chunk- Sweave gets confused if you use more than
one *high level* plotting command.

2. Don't call the pdf() function- the Sweave driver does this automatically
if you set pdf=T in the \SweaveOpts or the << >> code chunk header.

3. Don't use cat() to output the \begin{figure}, \end{figure},
\includegraphics, ect. These will end up in the wrong place.
your .Rnw file:

\begin{figure}[h]
\centering

% Replace width and height with whatever dimensions you need. Leave them as
bare numbers
% i.e. 5 not 5in.
<<fig1,echo=F,fig=T,pdf=T,width=5,height=5>>=
plot(1:10)
@
% You can put a // here to cause the figures to separate onto two lines.
<<fig2,echo=F,fig=T,pdf=T,width=5,height=3>>=
plot(1:10)
@
% It is very important that all code chunks have different names! I.e.
<<fig1>>, <<fig2>> ect.
\end{figure}

The result of running Sweave on filename.Rnw will be:

\begin{figure}[h]
\centering
\includegraphics{filename-fig1}
\includegraphics{filename-fig2}
\end{figure}

Hope this helps!

-Charlie

-----
Charlie Sharpsteen
Undergraduate
Environmental Resources Engineering
Humboldt State University