У меня проблема со следующим фрагментом кода:
\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 в качестве обходного пути, но похоже, что scatterplot3d генерирует так много информации, что полученный рисунок не может быть включен в латексный документ из-за размера памяти (ошибка (мой фактический график будет иметь более 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, и оси находятся на графике! Похоже, то, как scatterplot3d выводит цифры, не согласуется с тем, как \ includegraphics ищет цифры ...
Итак, я все еще ищу решение, которое будет включать метки осей.