R, Latex, Sweave, ggplot2-изменение размеров ggplot
В настоящее время я работаю над отчетом R Sweave. И у меня возникли некоторые трудности с размерами ggplot в выводе sweave pdf. Мой код:
documentclass{report}
begin{document}
demo demo demo demo demo demo demo demo demo demo demo demo
begin{figure}[h]
begin{center}
<<echo=FALSE, fig=TRUE>>=
require(ggplot2)
df <- data.frame(a= c(1:10), b = c (10:1))
ggplot(data = df, aes(a, b)) + geom_line()
@
caption{caption}
end{center}
end{figure}
demo demo demo demo demo demo demo demo demo demo demo demo
end{document}
Теперь я хочу управлять размерами ширины и высоты графика в выводе pdf. на самом деле я хочу сохранить высоту такой же, но сделать ширину такой же, как ширина текста.
Спасибо, что уделили мне время.3 ответа:
Взгляните на ggsave.функция latex () из пакета AFLP, доступного на R-Forge
install.packages("AFLP", repos="http://R-Forge.R-project.org")
Тогда ваш файл Sweave упростится до этого
\documentclass{report} \begin{document} demo demo demo demo demo demo demo demo demo demo demo demo <<echo=FALSE, results = tex>>= require(ggplot2) ggsave.latex <- AFLP:::ggsave.latex df <- data.frame(a= c(1:10), b = c (10:1)) p <- ggplot(data = df, aes(a, b)) + geom_line() ggsave.latex(p, filename = "myplot.pdf", width = 2, height = 10, caption = "Your caption") @ demo demo demo demo demo demo demo demo demo demo demo demo \end{document}
Вы можете попробовать использовать
knitr
пакет. (Полное раскрытие: я являюсь незначительным вкладчиком в кодовую базу этого пакета), что позволяет указатьout.width
, который управляет шириной рисунка. Таким образом, вы можете переписать свой фрагмент кода как<<echo=FALSE, out.width = '0.9\\textwidth'>>= suppressMessages(require(ggplot2)) df <- data.frame(a= c(1:10), b = c (10:1)) ggplot(data = df, aes(a, b)) + geom_line() @
Большое спасибо, Рамнат. FWIW, я вставляю полный код сюда:
\documentclass{report} \begin{document} demo demo demo demo demo demo demo demo demo demo demo demo \begin{figure}[h] <<echo=FALSE, fig.align='center', out.width='0.9\\textwidth', message=FALSE>>= require(ggplot2) df <- data.frame(a= c(1:10), b = c (10:1)) ggplot(data = df, aes(a, b)) + geom_line() @ \caption{caption} \end{figure} demo demo demo demo demo demo demo demo demo demo demo demo \end{document}
Я добавил опции
fig.align='center'
для центрирования рисунка (вам не нужно использовать\begin{center}
и\end{center}
в LaTeX, которые иногда могут центрировать неожиданные вещи в документе), иmessage=FALSE
для подавления сообщений изrequire(ggplot2)
.Вы можете скомпилировать документ следующим образом:
library(knitr) knit('your_document.Rnw')