r knitr chunk options for figure height / width are not working
Asked Answered
U

1

12

I used to use knitr in R to produce reports from the .Rnw format. In my reports I often put a plenty of plots and manipulated their size with the use of chunk optios, e.g.:

\begin{figure}[h!]
\centering
<<fig.width=6, fig.height=4, out.width='.89\\linewidth'>>=

plot(mtcars)

@
\caption{}
\end{figure}

It was few months ago. Then I moved to another environment, reinstalled R and these options seem no longer work - the plot size stays unchanged on the PDF output!

Here comes all the lines of code regarding any option settings. I am looking forward any suggestions what am I doing wrong.

<< >>=
library(knitr)
knitr::opts_chunk$set(echo=F, eval=T, message = F, warning=F, cache = F, fig=TRUE)
@

\begin{figure}[h!]
\centering
<<fig.width=10, fig.height=3, out.width='.89\\linewidth', fig=TRUE, echo=F>>=
plot(mtcars)
@
\caption{mtcars plot}
\end{figure}

Exactly the same result appears when I use <<fig.width=10, fig.height=3, fig=TRUE, echo=F>>=.

Session info

> sessionInfo()
R version 3.1.1 (2014-07-10)
Platform: x86_64-pc-linux-gnu (64-bit)

locale:
 [1] LC_CTYPE=en_US.UTF-8      
 [2] LC_NUMERIC=C              
 [3] LC_TIME=pl_PL.UTF-8       
 [4] LC_COLLATE=en_US.UTF-8    
 [5] LC_MONETARY=pl_PL.UTF-8   
 [6] LC_MESSAGES=en_US.UTF-8   
 [7] LC_PAPER=pl_PL.UTF-8      
 [8] LC_NAME=C                 
 [9] LC_ADDRESS=C              
[10] LC_TELEPHONE=C            
[11] LC_MEASUREMENT=pl_PL.UTF-8
[12] LC_IDENTIFICATION=C       

attached base packages:
[1] splines   stats4    stats     graphics  grDevices
[6] utils     datasets  methods   base     

other attached packages:
 [1] bootstrap_2014.4     dplyr_0.3.0.9000    
 [3] het.test_0.1         vars_1.5-2          
 [5] lmtest_0.9-33        urca_1.2-8          
 [7] strucchange_1.5-0    sandwich_2.3-2      
 [9] zoo_1.7-11           MASS_7.3-34         
[11] VGAM_0.9-6           ggplot2_1.0.0       
[13] manipulate_0.98.1078

loaded via a namespace (and not attached):
 [1] assertthat_0.1   colorspace_1.2-4 DBI_0.3.1       
 [4] digest_0.6.4     evaluate_0.5.5   formatR_1.0     
 [7] grid_3.1.1       gtable_0.1.2     htmltools_0.2.6 
[10] knitr_1.7        labeling_0.3     lattice_0.20-29 
[13] lazyeval_0.1.9   magrittr_1.0.1   munsell_0.4.2   
[16] parallel_3.1.1   plyr_1.8.1       proto_0.3-10    
[19] Rcpp_0.11.3      reshape2_1.4     rmarkdown_0.3.9 
[22] scales_0.2.4     stringr_0.6.2    tools_3.1.1     
[25] yaml_2.1.13    

PDF outpout screenshot (unchanged size)

enter image description here

Unknit answered 21/12, 2014 at 19:18 Comment(5)
Try without out.width='.89\\linewidth'.Fearless
I did (i tried tens of combinations :<) - using <<fig.width=10, fig.height=3, fig=TRUE, echo=F>>= produces no change.Unknit
what does the fig=TRUE chunk option do? Doesn't it give you a warning? It seems left over from older Sweave syntax ...Myna
I can't replicate. My only suggestion is that you try naming the chunk so that you don't get leftover figures from a previous run, i.e. I have <<carplot, fig.width=10, fig.height=3, out.width='.89\\linewidth', fig=TRUE, echo=F>>=. Also, what is packageVersion("knitr")? I'm using 1.8 ...Myna
packageVersion("knitr") returns [1] ‘1.7’. Whithout fig=TRUE plots are not included in the report. Naming chunks is not the case as the problem appears even when tehre is only 1 plot to be included...Unknit
P
16

I'm pretty sure you were using Sweave instead of knitr. If you were using RStudio (you did not say it but I guess so), you need to change the global option (or project option) to knitr:

use knitr in RStudio

Ponytail answered 22/12, 2014 at 17:29 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.