sweave и ggplot2: вообще не создаются PDF-файлы - PullRequest
13 голосов
/ 22 июля 2010

Я пытаюсь создать сводный отчет, который содержит графику, выполненную с помощью ggplot2. Хотя я ищу какое-то окружение в долгосрочной перспективе - я просто использую простой файл .Rnw, который содержит только код и сюжет

 \documentclass[a4paper]{article}
 \SweaveOpts{echo=FALSE}
 \usepackage{a4wide}

  \begin{document}

  \begin{figure}[htbp]
  \begin{center}
 <<>>=
 library(ggplot2)
 x=rnorm(100)
 qplot(x)

 @
 \caption{My Graph}
 \end{center}
  \end{figure}
\end{document}

К сожалению, график не создан, я получаю только поврежденные файлы .pdf и .eps. Хотя я получаю хороший файл .tex, который, кажется, работает, за исключением графики. Я использую следующий основной код для его создания:

 Sweave("myfile.Rnw")

Я только что нашел в Интернете несколько старых постов, в которых обсуждались проблемы с прозрачностью и sweave / ggplot2, но ничто не могло помочь. Я также попробовал расслабленный пакет, который также не помог. Кстати, есть какие-нибудь новости о пакете decumar?

Ответы [ 3 ]

19 голосов
/ 22 июля 2010

qplot() производит объекты, а не графический вывод. Может показаться, что это происходит при запуске, но это потому, что без присваивания R автоматически печатает вывод qplot(). Чтобы интегрировать его в Sweave, либо оберните print() вокруг qplot(), либо назначьте выход qplot() чему-либо, затем оберните его в print().

...
<<fig = T, echo = F>>=
 library(ggplot2)
 x=rnorm(100)
 p <- qplot(x)
 print(p)
@
...

Это должно сработать. Я постоянно использую ggplot2 графику в своих документах.

3 голосов
/ 22 июля 2010

Вы должны обернуть его вокруг print(), чтобы заставить его работать в режиме sweave.

1 голос
/ 23 сентября 2011

На самом деле, хотя оба предыдущих ответа верны, ваша проблема в другом.

Вы должны убедиться, что весь кодовый блок находится слева от страницы (кроме пометок в функциях).Опять же, я понятия не имею, почему, но это вызывает проблемы для Sweave.

Убедившись, что весь код (и верхний / нижний колонтитул для фрагмента кода) были в левой части страницы (и добавив оператор печати), затем вашпример работает для меня.

Кстати, сегодня я узнал, что вы можете создать среду вокруг своего кода в кратких документах (о которых я не знал, и сэкономит мне много времени).Старый добрый стекопоток, обучающий вас чему-то новому, даже когда вы отвечаете на вопрос!

Надеюсь, это поможет.

...