2

我在 Sweave 报告中有几张图像,如下所示:

在此处输入图像描述

它们是由一个函数创建的,其代码类似于:

<<fig = T>>=
barplot(prop.table(table(x, y), margin = 2) * 100,
        border = F, xlab = '', ylab = '', las = 2)
@

我想压缩 y 轴,所以我的情节看起来像这样(没有标签失真):

在此处输入图像描述

我能够做到这一点的唯一方法是使用png()自定义高度参数,然后使用 LaTeX 上的图像文件,但这会破坏 Sweave 的整个目的。我怎样才能在barplot()(或使用par()或其他一些优雅的解决方案)内实现这一点?

4

1 回答 1

4

Sweave 有块选项widthheight图像尺寸。它不会控制最终呈现的 PDF 中的绘图有多大,因为这是 LaTeX 控制的,但它确实控制了图形本身的创建。

来自Sweave 手册[pdf]:

注意:容易混淆的一件事是 R 图形设备的width/height参数和 LaTeX\includegraphics命令的相应参数。Sweave 选项传递给 R 图形设备widthheight因此会影响生成的 EPS 和 PDF 文件的默认大小。它们不影响文档中图形的大小,默认情况下它们总是当前文本宽度的 80%。用于\setkeys{Gin}修改图形大小或\includegraphics结合 Sweave 选项使用显式命令include=FALSE

另请阅读

require("utils")
?RweaveLatex

其中也有详细信息。

对于您引用的示例,widthand heightare both 6,默认值。所以你可以做类似的事情

<<fig=TRUE, width=8, height=5>>=
barplot(prop.table(table(x, y), margin = 2) * 100,
        border = FALSE, xlab = '', ylab = '', las = 2)
@

以获得所需的比例。

[不要使用FT-你在自找麻烦!]

但是,请注意手册或?RweaveLatex说的内容。默认情况下,一旦在 LaTeX 中,图像将包含宽度等于0.8\textwidth. 因此,您可能还希望将每个块的宽度显式设置为创建的图形的大小,例如

\setkeys{Gin}{width=8in}
<<fig=TRUE, width=8, height=5>>=
barplot(prop.table(table(x, y), margin = 2) * 100,
        border = FALSE, xlab = '', ylab = '', las = 2)
@
%% reset if you want
\setkeys{Gin}{width=0.8\textwidth}

所以你必须管理这两个设置:

  1. sweave 块选项widthheight控制 EPS 或 PDF 文件(或两者)的创建
  2. \setkeys{Gin}控制使用 LaTeX 处理时包含图形的宽度。
于 2013-07-15T19:31:19.750 回答