【问题标题】:Multiple figures with rhtml and knitr带有 rhtml 和 knitr 的多个数字
【发布时间】:2012-12-03 15:07:34
【问题描述】:

我有一个 Rhtml 文件,我从中获取一个 R 文件。 在这个 R 文件中,我正在做一些绘图。

p=ggplot(data)
p+geom_line()

现在,我可以一个接一个地制作一个情节,并且在做的时候 knit(".Rhtml")然后我就一个接一个上图了。

但我希望将这些数字并排显示。 (数字的数量因报告而异)。

有没有办法在Rhtml文件中设置一个选项,这样 这些数字并排排列(例如两列或三列或四列)。

所以,实际上它会类似于par(mfrow)

【问题讨论】:

    标签: html r knitr


    【解决方案1】:

    使用out.width 将数字并排放置。这是一个可重现的例子

    ## Figures side by side
    
    
    ```{r out.width = '50%', echo = F, message = F}
    require(ggplot2)
    p0 = qplot(wt, mpg, data = mtcars)
    p1 = p0 + geom_smooth()
    p0
    p1
    ```
    

    编辑。如果您希望显示代码或显示消息,则只需将 fig.show = "hold" 添加到您的块选项中,以确保您的数字在块的其余部分之后打印,然后将它们并排打印,因为您设置out.width = "50%"

    请参阅 knitr 中的 this news 以了解引入更改的时间。

    【讨论】:

    • 设置 out.width 不会自动将数字并排放置。我正在尝试让 grid.arrange 运行...
    • 我在 RStudio 中运行了我的代码,输出确实并排显示了数字。您可能想要调整 50% 的值。请注意,如果您不设置 message = F,那么您将需要fig.show = "hold" 以确保您的数字打印在块的末尾并且文本不会干扰。
    • 工作正常, fig.show = "hold" 是关键点。如果我想做,例如 20 个地块,会发生什么。我想我不会自动换行。 - 所以第一行有两个地块,第二行有两个地块......
    • 我刚刚解决了问题,问题是写 print(ggplot(data...)).仅 ggplot(data) 不足以打印数据..
    • @steffi 如果您有 20 个地块,如果宽度大于容器宽度的 1/3 但小于容器宽度的 1/2,您将自动获得“换行符”。
    【解决方案2】:

    绘图可以与gridExtra 包结合使用。例如,如果您有三个图(p1p2p3),则命令为:

    library(gridExtra)
    newPlot <- grid.arrange(p1, p2, p3)
    

    查看gridExtra 包了解更多详情。

    【讨论】:

    • 关键是我想动态地做情节。是否有可能用循环填充网格?
    • @Sven 你的意思是 grid.arrange?
    猜你喜欢
    • 1970-01-01
    • 2017-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-29
    相关资源
    最近更新 更多