Слишком много пробелов между заголовком и рисунком, созданным tikzDevice и ggplot2 в LaTeX

В настоящее время я использую пакеты R ggplot2 и tikzDevice для создания графики и представления их в LaTeX документах, но я борюсь с возникающими в результате большими пробелами между рисунками и подписями, как вы можете видеть, сравнивая изображения (I ' я вручную выделил пробелы, чтобы было понятнее):

ggplot2 plot  tikz plot

Вот мой MWE:

Код R:

library(ggplot2)
library(tikzDevice)

set.seed(1)
x <- rnorm(200)

tikz(file = "Rplots.tex", width = 4, height = 4)
qplot(x, geom = "histogram")
dev.off()

и код LaTeX:

\documentclass{article}
\usepackage{tikz}

\begin{document}

\begin{figure}
\centering
\include{Rplots}
\caption{\texttt{ggplot2} plot.}
\end{figure}

\begin{figure}
\centering
\begin{tikzpicture}[scale=3]
    \clip (-0.1,-0.2)
    rectangle (1.8,1.2);
    \draw[step=.25cm,gray,very thin]
    (-1.4,-1.4) grid (3.4,3.4);
    \draw (-1.5,0) -- (2.5,0);
    \draw (0,-1.5) -- (0,1.5);
    \draw (0,0) circle (1cm);
    \filldraw[fill=green!20!white,
    draw=green!50!black]
    (0,0) -- (3mm,0mm)
    arc (0:30:3mm) -- cycle;
\end{tikzpicture}
\caption{\texttt{tikz} plot.}
\end{figure}

\end{document}

Я хотел бы знать, как избавиться от большого промежутка между подписью и рисунком via ggplot2.

PS. Версия R: 3.2.3, ggplot2 версия: 2.1.0, tikzDevice версия: 0.10-1. Я взял код для второго сюжета из Не очень краткое введение в LaTeX 2e Тобиаса Оетикера, версия 5.05, стр. 116.


person Jorge Esteban Mendoza    schedule 16.03.2016    source источник
comment
Вы пробовали изменить поле сюжета с помощью темы ggplot2? До сих пор не вижу в чем особенность тикз девайса. Если вы посмотрите на пример, который я разместил ниже, то точно такой же запас получается для устройства pdf.   -  person baptiste    schedule 20.03.2016


Ответы (3)


это больше похоже на вопрос LaTeX; Я думаю, что стандартный способ настроить пространство - это установить \abovecaptionskip

\documentclass{article}
\usepackage{tikz}
\setlength{\abovecaptionskip}{-15pt} 
\begin{document}

\begin{figure}
\centering
\include{Rplots}
\caption{\texttt{ggplot2} plot.}
\end{figure}

\end{document}

введите описание изображения здесь

person baptiste    schedule 16.03.2016
comment
Благодарю за ваш ответ! Это помогло, но изменило все цифры в документе. По-видимому, только фигуры tikz (насколько я могу судить), созданные с помощью tikzDevice, имеют огромное белое пространство между ними и подписями, поэтому я подумал, что это может быть каким-то образом исправить это с помощью tikzDevice. Я ошибся? - person Jorge Esteban Mendoza; 17.03.2016
comment
я не заметил необычно большого интервала в приведенном выше примере. У вас есть пример, показывающий, что стандартное устройство pdf дает гораздо меньшие поля, чем вывод графики tikz для того же графика? - person baptiste; 17.03.2016

Прошло так много времени с тех пор, как я задавал этот вопрос, но в итоге я хотел ответить, в чем проблема.

Как вы можете видеть в этом вопросе, различия между \ input {} и \ include {}, проблема связана с тем, что \include{} выполняет \clearpage до и после \include{}, генерируя пробелы, о которых я говорил.

С другой стороны, использование \input{} эквивалентно копированию и вставке кода в документ LaTeX, что предотвращает появление пробелов.

person Jorge Esteban Mendoza    schedule 21.09.2018

Я все еще не понимаю вашей проблемы, но позвольте мне предложить этот полный пример, показывающий точно такое же расстояние для устройства tikz и стандартного PDF-файла при использовании в документе knitr.

---
title: "Untitled"
header-includes:
- \usepackage{caption}
output: 
  pdf_document: 
    fig_caption: yes
---

First, we try this


```{r pdf, echo=FALSE, dev='pdf', fig.height=2, fig.width=2, fig.cap='This is a standard graphic.'}
library(ggplot2)
ggplot() + theme(plot.background=element_rect(colour = "red"))
```

Next, we try this

```{r tikz, echo=FALSE, dev='tikz', fig.height=2, fig.width=2, fig.cap='This is a tikz graphic.'}
ggplot() + theme(plot.background=element_rect(colour = "red"))
```

\newpage

## Fixing space

\captionsetup{skip=0pt}

```{r pdf2, echo=FALSE, dev='pdf', fig.height=2, fig.width=2, fig.cap='This is a standard graphic.'}
library(ggplot2)
ggplot() + theme(plot.background=element_rect(colour = "red"))
```

```{r tikz2, echo=FALSE, dev='tikz', fig.height=2, fig.width=2, fig.cap='This is a tikz graphic.'}
ggplot() + theme(plot.background=element_rect(colour = "red"))
```

введите описание изображения здесь

введите описание изображения здесь

person baptiste    schedule 17.03.2016
comment
Привет, батист, извиняюсь за поздний ответ. Я обновил свой вопрос, чтобы прояснить проблему. - person Jorge Esteban Mendoza; 20.03.2016