2011-05-05 76 views
6

我有一个关于连续创建两个图的问题,使用R和Package tikz设备将tikz发送到Latex。我想要做的是,连续绘制2个图。我所做的第一件事就是在par(mfrow=c(1,2))的氛围中创作。但是这样做效果不好,因为当使用Latex打印时,图像就像垂直矩形。我想要的是连续拍摄两张图片,它们是二次的。所以我接下来做了一个布局:我创建了一个布局:创建连续2个图的tikz图片

Layout<- matrix(c(1, 2), nrow = 1, ncol=2, byrow = TRUE) 
nf <- layout(mat = Layout, widths = c(1,1),heights = c(1,1), respect = TRUE) 
layout.show(nf) 

并绘制了这两个图。结果是二次的(这很好),但是当我为两个图(Latex中)添加标题时,它远离图。我想要做什么?任何thougts表示赞赏!

+0

感谢这么远!但有没有办法摆脱空白时,在以下布局绘制两个图:布局< - 矩阵(c(0,0,1,2),nrow = 2,ncol = 2,byrow = TRUE)' 'nf < - layout(mat = Layout,widths = c(1,1),heights = c(1,1),respect = TRUE)''layout.show(nf)'同样:图必须位于二次型! “par(mfrow = c(1,2))”或者反过来也没有帮助!任何想法真的很感激!来自德国的回归! PS:也许它可以通过split.screen命令来实现。更多信息'?? split.screen'。但是我绝对不知道如何使用这个:( – user734124 2011-05-09 10:09:27

回答

2

正如格雷格提到的,如果想要平方块图,但不希望R填充空白的大边框,则必须调整图块画布的宽度和高度。

下面是使用Sweave小例子:

\documentclass{article} 
\usepackage{Sweave} 
\usepackage{tikz} 
<<echo=FALSE,results=hide>>= 
    require(tikzDevice) 
@ 

\begin{document} 

\begin{figure} 
<<echo=FALSE,results=hide>>= 
    # Standard LaTeX article class has a \textwidth of ~4.5in 
    # Therefore, divide by 2 to get the right height. 
    tikz('layout-ex.tex', width = 4.5, height = 2.25) 

    Layout<- matrix(c(1, 2), nrow = 1, ncol=2, byrow = TRUE) 
    nf <- layout(mat = Layout, widths = c(1,1),heights = c(1,1), respect = TRUE) 
    layout.show(nf) 

    dev.off() 
@ 

    \centering 
    \input{layout-ex} 
    \label{fig:layout-ex} 
    \caption{A layout with two sub-figures} 
\end{figure} 

\end{document} 

由此得出的数字是这样的:

Example of using Layout

+0

是的,这有助于,但现在这个数字很小:(我怎样才能调整图的抓取?我没有使用sweave,但它应该没有区别... – user734124 2011-05-10 16:59:00

+0

@ user734124只需调整LaTeX边距,以便可以得到更宽的图形并重新计算适当的宽度和高度:'tikz(width = \ textwidth,height = 1/2 \ textwidth)'。 – Sharpie 2011-05-10 17:02:51

+0

你能否也请提一下,如何获得Sweave Package?我是一个完全乳胶小白,很抱歉打扰你! @ Sharpie:我必须在哪里放弃这个命令?是否有可能使用这个命令,而没有sweave? – user734124 2011-05-10 17:11:04

6

您指定的是respect = TRUE,这意味着您的设备内的图只占据高度的一半(如果在tikz设备上使用默认值)并且其余高度填充空白。当你添加一个标题时,它将被该空白处的图块所偏移。当您打开tikz设备时,请设置高度和宽度,以使高度接近宽度的一半,并且最终最终会减少很多空白,并且标题将更接近绘图。

+0

由于到目前为止但有下面的布局绘制两个地块时摆脱空白的一种方式: '布局< - 矩阵(C(0, 0,1,2),nrow = 2,ncol = 2,byrow = TRUE)' 'nf < - layout(mat = Layout,widths = c(1,1),heights = c(1,1)尊重=真)' 'layout.show(nf)' 同样:这些图必须是二次形式!'par(mfrow = c(1,2))',反之亦然无助! 任何想法真的很感谢! 从德国回归! PS:也许它可以实现分裂。屏幕命令。更多信息?? split.screen。当你这样做如果我加载tikzDevice包,那么但是我绝对不知道如何使用这个:( – user734124 2011-05-10 10:28:25

+0

不设置高度和宽度格雷格建议工作?会发生什么错? – Aaron 2011-05-10 16:05:32

+0

图中得到微小:( – user734124 2011-05-10 17:18:03