【问题标题】:Automated ggplot2 example gallery in knitrknitr 中的自动 ggplot2 示例库
【发布时间】:2012-07-24 02:40:30
【问题描述】:

我正在尝试使用knitr 制作ggplot2 geoms 的画廊。为了快速做到这一点,我想使用内置的examples 来填充内容。

经过反复试验,我已经到了这一点:

\documentclass[a4paper,titlepage]{tufte-handout}
\usepackage{pdflscape}
\usepackage{graphicx}
\usepackage{alltt}

<<setup, include=FALSE, cache=FALSE>>=
options(replace.assign=TRUE,tidy=TRUE)
library(ggplot2)
library(plyr)
library(scales)
geoms <- setdiff(apropos("^geom_"),"geom_blank")
@

\title{ggplot2 Gallery}

\begin{document}
\maketitle

<<examples, echo=FALSE, comment=NA>>=
for(i in geoms){
    writeLines(paste0("\\section{",gsub("_","\\\\_",i),"}"))
    do.call("example",list(i))
}
@

\end{document}

但仍有许多问题我无法解决:

  • 我似乎无法在块中混合markupasis 结果选项,以便生成部分标题。 (这对于稍后的文档导航至关重要)。有没有其他方法可以在块中生成书写 LaTex?

  • 有一些示例会引发错误(这就是为什么 geom_blank 被排除在外的原因)。 knitr documentation 声明在出现错误的情况下继续计算,但似乎只有编织过程在继续;示例循环在此时停止。有没有办法避免示例中出现错误的部分?

  • example 代码输出的语法未突出显示。 (有用但不是必需的)。

【问题讨论】:

  • 不,你不能混淆markupasis;当geom_blank 出现错误时,我很惊讶 ggplot2 通过了 R CMD 检查;我认为最好的方法是使用knitr 及其 brew 语法生成带有示例代码的 Rnw 文档,然后编译它。这很有趣,如果你到时候还没有弄清楚,我稍后会回来。
  • 将调用包装在 ?try 中以解决第二个问题。错误将被绕过。

标签: r ggplot2 knitr


【解决方案1】:

查看021-ggplot2-geoms.Rnw 获取完整代码。基本思想是在编织之前构建代码块。代码很短,可能不需要过多解释。

理论上你应该能够得到这样的东西(超过 200 页的ggplot2 示例):

【讨论】:

  • 效果很好,谢谢!没有意识到你可以递归knit!澄清一下,你不使用tidy是什么意思?
  • 我的印象是ggplot2的用户经常知道如何仔细组织他们的R代码,所以不需要使用formatR来自动重新格式化代码。至少 Hadley 已经很好地安排了示例代码。 tidy=TRUE 仅适用于懒惰的用户(没有空格、没有缩进、难看的长行、无法阅读……)
  • 啊,不幸的是,这就是我!
  • 其实我也很懒,所以我默认设置了tidy=TRUE;我只在编写包时格式化我的代码
  • @jbaums 谢谢。你能在library(ggplot2);library(knitr) 之后用sessionInfo()github.com/yihui/knitr-examples/issues 提出问题吗?
猜你喜欢
  • 1970-01-01
  • 2014-07-19
  • 1970-01-01
  • 2012-03-14
  • 1970-01-01
  • 1970-01-01
  • 2023-02-17
  • 2012-06-29
  • 1970-01-01
相关资源
最近更新 更多