在tTezDevice和gTeplot2在LaTeX

时间:2016-03-16 01:46:04

标签: r ggplot2 latex tikz

我目前正在使用R的ggplot2tikzDevice软件包生成图片并在LaTeX文档中介绍它们,但我正在努力在数字和字幕之间产生大的空白区域,如你比较图像你可以看到(我手动突出显示空格以使其更清晰):

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}

我想知道如何通过 ggplot2摆脱标题和图之间的巨大空间。

PS。 R版本:3.2.3,ggplot2版本:2.1.0,tikzDevice版本:0.10-1。我已经从Tobias Oetiker的 LaTeX 2e 的简短介绍,版本5.05,第116页中获取了第二个图的代码。

3 个答案:

答案 0 :(得分:1)

这听起来更像是一个LaTeX问题;我认为调整空间的标准方法是设置\abovecaptionskip

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

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

\end{document}

enter image description here

答案 1 :(得分:0)

我仍然没有解决您的问题,但让我建议这个完整的示例显示在knitr文档中使用时tikz和标准pdf设备的完全相同的间距。

---
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"))
```

enter image description here

enter image description here

答案 2 :(得分:0)

问了这个问题已经很久了,但我想回答到底是什么问题。

正如您在differences between \input{} and \include{}上的问题中所看到的那样,问题与\include{}\clearpage之前和之后进行\include{}的事实有关,我在说的空白。

另一方面,使用\input{}等效于将代码复制并粘贴到LaTeX文档中,这样可以防止空格。