Почему размер графика отличается между docx и html в rmarkdown :: render? - PullRequest
0 голосов
/ 11 декабря 2018

При попытке нанести фигуру из Rmd в Word и Docx размер графика отличается, когда версия docx обрезает края.Есть ли способ предотвратить это?

Это Rmd, который несколько минимально воспроизводит это.(на других графиках эффект гораздо более экстремальный, но для воспроизведения требуется больше кода)

```{r}
library(gemtc)
example(gemtc)
forest(results)
```

rmarkdown::render("./test.Rmd", output_format="word_document", clean=F)

Word version

rmarkdown::render("./test.Rmd", output_format="html_fragment") HTML version

Обратите внимание на обрезанную CrI с правой стороны.

Кажется, что параметры графика между прогонами отличаются (это от другого графика):

par(no.readonly = T)

(docx)

## $pin
## [1] 3.76 2.16
## 
## $plt
## [1] 0.164 0.916 0.255 0.795

против.

(html)

## $pin
## [1] 5.76 3.16
## 
## $plt
## [1] 0.1171429 0.9400000 0.2040000 0.8360000
## 

На том же участке.Это приводит к тому, что края в некоторых случаях для Word довольно сильно обрезаются.

информация о версии

R version 3.4.4 (2018-03-15)
Platform: x86_64-pc-linux-gnu (64-bit)
Running under: Ubuntu 18.04.1 LTS

Matrix products: default
BLAS: /usr/lib/x86_64-linux-gnu/blas/libblas.so.3.7.1
LAPACK: /usr/lib/x86_64-linux-gnu/lapack/liblapack.so.3.7.1

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

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

other attached packages:
[1] knitr_1.21.1   rmarkdown_1.11 gemtc_0.8-2    coda_0.19-2   

loaded via a namespace (and not attached):
 [1] Rcpp_1.0.0      lattice_0.20-38 digest_0.6.18   truncnorm_1.0-8
 [5] slam_0.1-43     plyr_1.8.4      grid_3.4.4      meta_4.9-3     
 [9] magrittr_1.5    evaluate_0.12   stringi_1.2.4   tools_3.4.4    
[13] stringr_1.3.1   igraph_1.2.2    xfun_0.4        compiler_3.4.4 
[17] pkgconfig_2.0.2 Rglpk_0.6-3     htmltools_0.3.6

Иллюстративный пример более экстремального случая (те же команды, что и выше, выполняются в том же файле Rmd, заговор происходит из пакета coda)

HTML-версия (правильная) HTML version (correct) DOCX-версия (неправильные размеры) docx version (wrong sizes)

1 Ответ

0 голосов
/ 21 декабря 2018

Отключение происходит из-за слишком малого устройства печати (png).R Markdown использует разные значения по умолчанию для ширины фигуры в зависимости от формата вывода.Вязание в HTML с параметрами по умолчанию приведет к получению изображений шириной 7 дюймов , в то время как изображения в формате docx имеют ширину 5 дюймов по умолчанию .Проблемные графики слишком широки для выбранной ширины устройства, что приводит к непреднамеренному обрезанию.

Вы можете убедиться в этом, установив ширину фигуры в 5 дюймов для вывода HTML.Полученные изображения будут иметь те же проблемы, что и в docx:

---
output:
  html_document:
    fig_width: 5
---

```{r}
library(gemtc)
example(gemtc)
forest(results)
```

Поэтому исправление состоит в том, чтобы выбрать большую ширину фигуры, либо глобально

---
output:
  word_document:
    fig_width: 5.5
---

, либо для каждого графика отдельно:

```{r fig.width=5.5}
library(gemtc)
example(gemtc)
forest(results)
```
...