Lyx和Latex使用.eps图像精彩地工作.但是当我从Rstudio导出带有平滑曲线的散点图时,这些点会丢失,并且只会使用曲线传递绘图.
我尝试过的两种保存方法是:
在Rstudio中,从图像字段的下拉菜单中选择"导出",然后另存为.eps.有趣的是,情节在Rstudio预览中应该显示.
前言积代码与setEPS()随后postscript(),将具有所需尺寸等,随后使用积呼叫library(ggplot2),例如ggplot().
起初我认为问题可能在其他地方.但后来我在Mathematica中保存了一个.eps并没有问题.
我在互联网上偷窥,发现在R中保存.eps的其他问题,但没有一个处理丢失的信息.
到底发生了什么?
我应该提一下.在Lyx中的.eps成像器渲染比任何其他格式都要好,所以我坚持使用.eps.
非常感谢你的投入,我还不能投票给他们.
编辑
据我所知,由于EPS无法保持透明度,因此这个问题是死路一条.(见评论.)根据要求,我发布了突出问题的代码.
说你有数据data <- data.frame(replicate(2,rnorm(1000))).你想绘制它们,但有很多点,所以你添加一个透明度参数.此外,还可以添加具有置信区间的拟合线.你的代码是:
ggplot(data = data, aes(x=X1, y=X2)) +
geom_point(alpha=0.4) +
stat_smooth(se=T, method="lm")
Run Code Online (Sandbox Code Playgroud)
看起来不错.但是,如果您尝试将绘图保存为EPS,则稍后打开保存文件时所看到的只是一个空的绘图对象,除了蓝色拟合线.
教训是,如果你坚持使用EPS,你必须关闭透明带.在这种情况下,设置alpha=1(或只是不包括它)和se=FALSE.
Tom*_*ers 11
问题是R中的EPS不支持透明度.
一种选择是导出为PDF,完全支持透明度:
ggplot(data = data, aes(x=X1, y=X2)) +
geom_point(alpha=0.4) +
stat_smooth(se=T, method="lm")
dev.copy2pdf(file="plot.pdf",out.type="cairo", width=10, height=7.5)
Run Code Online (Sandbox Code Playgroud)
然后,您可以使用pdftopsInkscape或Adobe Illustrator 将PDF转换为EPS .
保存为高分辨率PNG也适用于透明度,但当然它不再是矢量格式...
或者您可以使用包导出到Powerpoint export,它为您提供完全可编辑的矢量格式,同时完全支持透明度:
library(export)
library(ggplot2)
data=data.frame(replicate(2,rnorm(1000)))
ggplot(data = data, aes(x=X1, y=X2)) +
geom_point(alpha=0.4) +
stat_smooth(se=T, method="lm")
graph2ppt(file="plot.pptx", width=8, height=6)
Run Code Online (Sandbox Code Playgroud)

编辑:如果你绑定到EPS格式,它不能真正支持半透明,你可以使用ReporteRs,一个光栅化半透明区域,但保持其余为矢量格式.在最近的更新中cairo_ps(),现在还有一个参数cairo_ps()来控制dpi中的分辨率,其中半透明区域被光栅化(其余区域保持为矢量格式).因此,您可以使用:
cairo_ps(file = "test.eps", onefile = FALSE, fallback_resolution = 600)
qplot(Sepal.Length, Petal.Length, data = iris, color = Species, size = Petal.Width, alpha = I(0.7))
dev.off()
Run Code Online (Sandbox Code Playgroud)
甚至更短:
graph2eps(file="plot.pptx", width=8, height=6, cairo=TRUE, fallback_resolution=600)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6473 次 |
| 最近记录: |