Есть ли способ сохранить полные поля в выводе ggplot2 pdf? - PullRequest
1 голос
/ 04 апреля 2020

В этом ответе { ссылка } Я частично ответил на проблему с изменением размера подфигур в выводе ggplot2, используя код, подобный следующему:

---
title: "Untitled"
header-includes:
   - \usepackage{subcaption}
output: 
  pdf_document:
    keep_tex: TRUE
---

```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
```

```{r, echo = FALSE, fig.height=3, fig.width=1,fig.subcap=c("first", "second", "third"),fig.cap="Main"}
library(ggplot2)
df <- data.frame(
  x = rnorm(30),
  y = rnorm(30)
)
p1 <- p2 <- p3 <- ggplot(df, aes(x, y)) + geom_point()
p1 + theme(plot.margin = unit(c(1,0,1,0),"in") + theme_get()$plot.margin)
p2 + theme(plot.margin = unit(c(1/2,0,1/2,0),"in") + theme_get()$plot.margin)
p3
```

Это приводит к выводу:

screenshot

Обратите внимание, что на первом и втором графиках нет нижнего поля, хотя я запрашивал равные верхнее и нижнее поля. Если я посмотрю на фактические .pdf файлы в каталоге рисунков, я пойму, что они вообще не содержат полей: кажется, что файл обрезан до края ограничительной рамки чернил на странице, поэтому первый график (в соответствии с «Свойствами документа» Acrobat) 0,83 дюйма на 0,83 дюйма, второй - 0,83 дюйма на 1,83 дюйма, а последний - 0,83 дюйма на 2,83 дюйма.

Что бы я ожидать, чтобы получить - это иметь каждый из трех графиков, вертикально центрированных в пределах размера 1 на 3 дюйма, который я запросил. Все PDF-файлы должны быть такого размера.

Есть ли способ подавить обрезку?

1 Ответ

1 голос
/ 04 апреля 2020

Посмотрев некоторое время исходный код knitr и rmarkdown, я нашел ответ. Выходная функция rmarkdown::pdf_document имеет аргумент fig_crop, который по умолчанию равен TRUE. Установка FALSE подавляет обрезку рисунков во всем документе. Таким образом, все, что мне нужно сделать в этом примере, это изменить мой заголовок YAML, чтобы включить

output: 
  pdf_document:
    fig_crop: FALSE

, и проблема решена. Насколько я знаю, нет опции уровня чанка, чтобы изменить это: все цифры обрезаны или нет.

...