Подтвердить что ты не робот

Автоматизированная галерея примеров ggplot2 в knitr

Я пытаюсь создать галерею геометрий ggplot2, используя knitr. Чтобы сделать это быстро, я решил использовать встроенный example для заполнения содержимого.

После некоторых проб и ошибок я дошел до этого:

\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}

Но есть еще ряд проблем, которые я не могу решить:

  • Кажется, я не могу смешивать markup и asis параметры результатов внутри фрагмента, чтобы заголовки разделов были подготовлены. (Это будет иметь решающее значение для навигации по документу позже). Есть ли другой способ создания LaTex внутри куска?

  • Есть несколько примеров, которые вызывают ошибки (поэтому исключается geom_blank). Документация knitr утверждает, что вычисление продолжается в случае ошибок, но это, похоже, только процесс вязания, который продолжается; в этом случае цикл цикла прекращается. Есть ли способ избежать частей примеров, которые являются ошибками?

  • Вывод кода example не выделяется синтаксисом. (Полезный, но не существенный).

4b9b3361

Ответ 1

См. 021-ggplot2-geoms.Rnw для полного кода. Основная идея состоит в том, чтобы построить куски кода, прежде чем вязать их. Код короток, поэтому, вероятно, мне не нужно слишком много объяснять это.

В теории вы должны иметь возможность получить что-то вроде этого (более 200 страниц примеров ggplot2):

ggplot2 geoms generated by knitr