У меня возникла проблема со следующим фрагментом кода:
\documentclass{article}
\usepackage{graphicx}
\begin{document}
\includegraphics{myscatterplot.pdf}
\end{document}
Где "myscatterplot.pdf" генерируется следующим кодом в R:
library(scatterplot3d)
pdf("myscatterplot.pdf")
scatterplot3d(rnorm(100), rnorm(100), 1:100, highlight.3d = TRUE)
dev.off()
Проблема заключается в том, что полученный документ LaTeX при компиляции с texworks (pdfLatex + makeindex + bibtex) имеет оси графика, но ни одна из точек на графике графика или оси (в этом случае это только три оси). Сообщения об ошибках и предупреждениях, выводимые R или LaTeX, отсутствуют. Я использую:
- R 2.12.1 в Windows 7,
- MiKTeX 2.8,
- TeXworks
- Adobe Reader 9 (не уверен, что это отношение...)
Мне удалось использовать команду \includegraphics для включения png-версии рисунка, а открытие "myscatterplot.pdf" с помощью adobe показывает цифру, которую я хочу в своем документе.
Я попытался использовать пакет tikz в качестве обходного пути, но, похоже, так много информации, генерируемой scalplot3d, что итоговая цифра не может быть включена в латексный документ из-за размера памяти (ошибка (мой фактический график будет иметь 10000 + точек!).
У меня есть подозрение, что проблема связана с шрифтами в файле .pdf, но я попытался изменить pdf-шрифты, используя
pdf("changefont.pdf")
par(family = "Helvetica")
scatterplot3d(rnorm(100), rnorm(100), 1:100, highlight.3d = TRUE)
dev.off()
с точно таким же результатом при использовании \includegraphics (changefont.pdf).
Другая возможная проблема, которую я рассматриваю, заключается в том, что, возможно, вывод scatterplot3d на самом деле представляет собой несколько изображений, а \includegraphics берет только первую фигуру (оси) из файла pdf. В этом случае я все еще не уверен, как обойти это.
Я был бы очень признателен за обходное решение, так как в конце концов мне захочется сделать все это с Sweave, и это заставляет меня горько относиться к красиво оформленному выпуску пакета!
Заранее благодарим за ваши ответы.
Изменить 1:
Итак, первая рекомендация заключалась в использовании формата EPS вместо pdf. Это дало некоторые результаты, но не то, что я хотел. Я запустил следующее:
\documentclass{article}
\usepackage{graphicx,epstopdf}
\begin{document}
\begin{figure}
\includegraphics[angle = 270, width= 6in, keepaspectratio=true]{change.eps}
\end{figure}
\end{document}
Я сгенерировал "change.eps", используя
postscript("change.eps")
scatterplot3d(rnorm(100), rnorm(100), 1:100, highlight.3d = TRUE)
dev.off()
Это привело к улучшению (несмотря на то, что он, как ни странно, повернул график на 90 градусов по часовой стрелке на выходе из латекса!), и теперь у меня есть оси и точки из диаграммы рассеяния в моем выходе из латекса! Тем не менее, метки оси все еще не фигурируют, хотя я открыл "change.eps" с помощью ghostview, а оси находятся в сюжете! Похоже, что данные dispplot3d не согласуются с тем, как \includegraphics ищет цифры...
Итак, я все еще ищу решение для этого, которое будет включать метки осей.