我遇到了以下代码片段的问题:
\documentclass{article}
\usepackage{graphicx}
\begin{document}
\includegraphics{myscatterplot.pdf}
\end{document}
以下是在R中生成"myscatterplot.pdf"的代码:
library(scatterplot3d)
pdf("myscatterplot.pdf")
scatterplot3d(rnorm(100), rnorm(100), 1:100, highlight.3d = TRUE)
dev.off()
问题是,用texworks编译生成的LaTeX文档(pdfLatex+makeindex+bibtex)具有图形轴线,但没有绘图的任何点或轴标签(在这种情况下,只有3D坐标轴本身)。R或LaTeX没有输出错误或警告消息。我使用的软件版本是: R 2.12.1 on Windows 7,MiKTeX 2.8,TeXworks和Adobe Reader 9(不确定是否相关...)。我已经使用\includegraphics命令成功将png版本的图像包含到文档中,并且用adobe打开"myscatterplot.pdf"可以看到想要的图像。我尝试使用tikz包作为解决方法,但由于scatterplot3d产生的信息太多,所以由于内存大小的原因无法将结果图形包含在LaTeX文档中(实际情况下我的图形将有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()
尽管这种方法(令人惊讶的是,它在latex输出中将图形逆时针旋转了90度!)确实使结果有所改善,我现在已经在latex输出中拥有了散点图中的坐标轴和数据点!然而,即使我使用ghostview打开“change.eps”并且坐标轴已经在图形中,轴标签仍然没有出现在图形上!看来scatterplot3d输出图形的方式与\includegraphics搜索图形的方式不一致...
因此,我仍然在寻找一个解决方案,可以在图形上包含坐标轴标签。