swave и ggplot2:PDF-файлы вообще не создаются
-
26-09-2020 - |
Вопрос
Я пытаюсь создать отчет о переплетении, содержащий графику, выполненную с помощью 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, но ничего, что могло бы помочь.Я также попробовал расслабленный пакет, который тоже не помог.Кстати, есть какие-нибудь новости по упаковке Декумара?
Решение
qplot()
создает объекты, а не графический вывод.Может показаться, что так и происходит, когда вы его запускаете, но это потому, что без присваивания R автоматически печатает выходные данные qplot()
.Чтобы интегрировать его в Sweave, либо оберните print()
вокруг qplot()
, или назначьте вывод qplot()
к чему-то, затем заверните это в print()
.
...
<<fig = T, echo = F>>=
library(ggplot2)
x=rnorm(100)
p <- qplot(x)
print(p)
@
...
Это должно сработать.я использую ggplot2
графика в моих документах Sweave постоянно.
Другие советы
Вы должны обернуть его вокруг print()
, чтобы сделать его работать в Sweave.
На самом деле, пока оба предыдущих ответа верны, ваша проблема - это что-то еще.
Вам необходимо убедиться, что весь блок кода находится слева от страницы (кроме iundentation в функциях).Опять же, я понятия не имею, почему, но это вызывает проблемы для Sweave.
После обеспечения того, чтобы весь код (и заголовок / нижний колонтитул для куска кода) находились слева от страницы (и добавляя оператор печати), а затем ваш пример работает для меня.
Кстати, я сегодня узнал, что вы можете создать окружающую среду вокруг вашего кода в Sweave Documents (которые я не осознавал, и спасет меня много времени).Хороший добрый стоги, преподавая вам что-то новое, даже если вы отвечаете на вопрос!
Надеюсь, это поможет.