我遇到以下代码段的问题:
\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()
问题在于,使用texworks(pdfLatex + makeindex + bibtex)进行编译时生成的LaTeX文档具有图形轴,但绘图或轴标签中没有任何点(在这种情况下,它只是3d轴本身)。 R或LaTeX不输出错误或警告消息。 我正在使用:
我已经能够使用\ includegraphics命令包含该图的png版本,并用adobe打开“myscatterplot.pdf”,在我的文档中显示我想要的数字。
我曾尝试使用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度!),我现在有了散点图中的轴和点在我的乳胶输出!但是,即使我使用ghostview打开了“change.eps”,轴标签仍然没有出现在图中!似乎scatterplot3d输出数字的方式与\ includegraphics搜索数字的方式不一致......
所以,我仍然在寻找一个包含轴标签的解决方案。
答案 0 :(得分:5)
查看使用您列出的命令生成的myscatterplot.pdf,轴和标签就在那里。但是,pdf相当大(7英寸x 7英寸)。
如果你使用pdf()的重量/身高参数会有帮助吗?
pdf("myscatterplot.pdf", height=3.5, width=3.5)
答案 1 :(得分:4)
我刚用tikzDevice的例子来做一些压力测试,看起来结果很大程度上取决于使用哪个TeX引擎。特别值得注意的是luatex
,pdftex
的后继者,证明能够处理具有许多图形元素的图。
pdflatex
:
通过1000点积累,超过记忆并在10,000点死亡。
xelatex
:
也超过记忆而死于10,000点。
lualatex
:
在~45秒内咀嚼10,000点并产生1 MB的PDF文件。在~7.5分钟内登录100,00点(一个10 MB的输入文件),吐出一个8.5 MB的PDF文件,达到~750 MB的内存使用率。没有尝试100万基准。
看起来pdftex
和xetex
在程序登陆时预先分配所有内存,这就是他们将获得的全部内容。另一方面,luatex
似乎可以动态分配内存,因此只受可用RAM量的限制。
因此,如果pdflatex
给您“内存不足”错误,请尝试lualatex
进行旋转!
这些测试是使用TeX Live 2010发行版中包含的TeX编译器完成的。我也是tikzDevice
的作者之一答案 2 :(得分:3)
您可以尝试Sweave:http://www.statistik.lmu.de/~leisch/Sweave/(Sweave是一个允许嵌入R代码以在乳胶文档中进行完整数据分析的工具)
答案 3 :(得分:1)
如果你想在你的文件中插入pdf图像,我认为你必须使用pdflatex而不是标准乳胶。如果没有安装,我会尝试从R生成eps格式的数字,而不是pdf。
答案 4 :(得分:1)
par(xpd=NA)
par(oma=c(3, 3, 0, 0))
也适用于postscript,以便不将图形旋转90度:
postscript(file="xx.eps", horizontal=FALSE)
HTH
答案 5 :(得分:1)
我实际上遇到了完全相同的问题(TexWorks,pdfLatex,Windows 7)。我发现了一些有趣的东西:当我第一次启动Latex时,数字出现了轴和所有,当我重新运行pdfLatex时,轴再次消失。这给了我一个预感,我想出来了:即使乳胶预览没有显示轴,PDF格式也是如此。而且您甚至不必告诉\includegraphics
命令图形是PDF格式。
pdf("C:/Users/Orr/Documents/Leiden University/Master thesis/Chapters/Images/bioRes/Boxplots mouse raw data.pdf")
boxplot(mouse_data_raw,main="Mouse raw data")
dev.off()
\begin{figure}[t]
\includegraphics[scale=0.5]{mouse-box-raw}
\includegraphics[scale=0.5]{human-box-raw}
\end{figure}