设置out.width或out.height时,编织器不显示图形

时间:2018-06-24 15:46:35

标签: r ggplot2 knitr

我已经发布了这个问题,但是它缺少MWE,所以我决定删除旧问题并发布一个新问题,因为旧问题几乎必须被完全重写。

我正在尝试使用.Rmdknitr研究报告排版为pdf。我想包含在ggplot中创建的图形。

如果我包含out.widthout.height块选项,则该图不会出现在输出pdf文档中。

这是MWE:

1)数据创建:

datas <- data.frame(x = rep(1:30), y = rep(40:69))
save(datas, file = 'datas.RData')

2)主文件-file.Rmd

---
author: "NN"
title: "Title"
fontsize: 14pt
geometry: margin=2cm
output: pdf_document
header-includes: |
    \usepackage{caption}
    \usepackage{bookman}
    \usepackage{multirow}
    \usepackage{array}
    \usepackage[htt]{hyphenat}
    \usepackage{booktabs}
    \usepackage{longtable}
    \usepackage[table]{xcolor}
    \usepackage{wrapfig}
    \usepackage{float}
    \usepackage{colortbl}
    \usepackage{pdflscape}
    \usepackage{tabu}
    \usepackage{threeparttable}
    \usepackage{threeparttablex}
    \usepackage[normalem]{ulem}
    \usepackage{makecell}
    \captionsetup[table]{width=\textwidth}
    \renewcommand{\tablename}{Tablica}
    \renewcommand{\figurename}{Slika}
---
```{r setup, echo = F, include = F}
library(knitr)
library(kableExtra)
# knitr setup
opts_chunk$set(prompt = T, background = '#E5E8E8', dpi = 600, fig.width = 12, dev = 'pdf')
options(digits = 3)

# packages
library(tidyverse)
library(data.table)
library(wrapr)
library(readxl)
library(magrittr)
library(psych)
library(ggpubr)

# loading the data
load('datas.RData')
```
sample text

```{r desk_stat, child = 'file_d.Rmd'}
```

3)子文件(包含情节的文件)-file_d.Rmd

```{r, fig.cap = '\\label{bar-znanje-visina}Some label.', cache = T, out.width = '.49\\linewidth'}
ggplot(datas,
       aes(x = x)) +
    geom_bar()
```

如果使用这些选项对它进行排版,则.md文件中的图像将包含在其中:

<embed src="figure/unnamed-chunk-1-1.pdf" title="\label{bar-znanje-visina}Some label." alt="\label{bar-znanje-visina}Some label." width=".49\linewidth" type="application/pdf" />

输出的pdf看起来像这样:

output with out.width

如果我在没有out.width选项的情况下排版输出,则.md文件中的图像将包含在以下内容中:

![\label{bar-znanje-visina}Some label.](figure/unnamed-chunk-1-1.pdf)

输出的pdf看起来像这样:

output without out.width

我正在用.pmd编织.Rmd文件

Rscript -e 'library(knitr); opts_knit$set(out.format = "latex"); knit("file.Rmd")'

会话信息:

R version 3.4.3 (2017-11-30)
Platform: x86_64-pc-linux-gnu (64-bit)
Running under: Manjaro Linux

Matrix products: default
BLAS: /usr/local/lib64/R/lib/libRblas.so
LAPACK: /usr/local/lib64/R/lib/libRlapack.so

locale:
 [1] LC_CTYPE=en_US.utf8        LC_NUMERIC=C              
 [3] LC_TIME=hr_HR.UTF-8        LC_COLLATE=en_US.utf8     
 [5] LC_MONETARY=hr_HR.UTF-8    LC_MESSAGES=en_US.utf8    
 [7] LC_PAPER=hr_HR.UTF-8       LC_NAME=C                 
 [9] LC_ADDRESS=C               LC_TELEPHONE=C            
[11] LC_MEASUREMENT=hr_HR.UTF-8 LC_IDENTIFICATION=C       

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

other attached packages:
[1] kableExtra_0.9.0 knitr_1.20       nvimcom_0.9-72  

loaded via a namespace (and not attached):
 [1] Rcpp_0.12.16      rstudioapi_0.7    xml2_1.2.0        magrittr_1.5     
 [5] hms_0.4.2         rvest_0.3.2       munsell_0.4.3     viridisLite_0.3.0
 [9] colorspace_1.3-2  R6_2.2.2          rlang_0.2.0       plyr_1.8.4       
[13] stringr_1.3.0     httr_1.3.1        tools_3.4.3       htmltools_0.3.6  
[17] rprojroot_1.3-2   digest_0.6.15     tibble_1.4.2      readr_1.1.1      
[21] evaluate_0.10.1   rmarkdown_1.9     stringi_1.1.7     compiler_3.4.3   
[25] pillar_1.2.1      scales_0.5.0      backports_1.1.2   pkgconfig_2.0.1  

编辑:更新

我尝试排版Yihui的最小.Rnw example字体,效果很好。我还尝试修改它,以便它显示来自MWE的图形,并且它也可以工作。我还注意到,在编译keep_tex = true文件时,设置.Rmd不会执行任何操作。没有创建tex文件。

2 个答案:

答案 0 :(得分:1)

如果您总是编织成pdf,则可以尝试在代码块设置中设置out.width = '49%'。您也可以尝试在代码块中调整fig.width =设置,该设置采用以英寸为单位的图形宽度大小。如果所有方法都不起作用,我还将在gridExtra软件包的grid.arrange()函数中take a look

您的问题也无法重现。在Win10机器上运行您的代码时,得到以下输出。

reproduced_example

答案 1 :(得分:1)

使用knitr::knit()比使用rmarkdown::render()更容易。您可以直接调用

Rscript -e 'rmarkdown::render("file.Rmd")'

或间接使用littler包中的示例脚本

render.r file.Rmd

在命令行上。