r - 透明度可以与 PostScript/EPS 一起使用吗?

标签 r plot transparency postscript

我正在尝试将 R 图保存为 EPS 文件,但该图的以下组件存在问题 - 灰色透明多边形(透明黑色 = 灰色效果):

polygon(x.polygon, y.polygon.6, col="#00000022", border=NA)

当将绘图保存为 PDF 但不能保存为 EPS 时,这行代码可以正常工作。 EPS好像不支持透明度?我还有什么选择?

这是完整情节的代码:

postscript(file="Figure.eps", width=5.5, height=5.5, onefile=F, horizontal=F)

ts(t(data.frame(initial_timepoint, second_timepoint, third_timepoint, final_timepoint)))->obj
obj[,-c(3,7)]->obj1
plot(obj1, plot.type="single", lwd=0.6, xaxs="i",yaxs="i",xlab="",ylab="LV ejection fraction (%)",xaxt='n',yaxt='n',ylim=c(0,70),col="black")
axis(1, at=c(1,2,3,4), labels=c("1","2","3","4"),cex.axis=1)
axis(2, at=seq(0,70,10), labels=c("0%","10%","20%","30%","40%","50%","60%","70%"),cex.axis=1, las=1)
abline(v=c(2,3),lwd=0.6,lty=2)

stderr <- function(x) sqrt(var(x,na.rm=TRUE)/length(na.omit(x)))
avg<-c(mean(initial_timepoint,na.rm=T), mean(second_timepoint,na.rm=T), mean(third_timepoint,na.rm=T), mean(final_timepoint,na.rm=T))
err<-c(stderr(initial_timepoint), stderr(second_timepoint), stderr(third_timepoint), stderr(final_timepoint))

my.count <- c(1,2,3,4)
my.count.rev <- c(4,3,2,1)
y.polygon.6 <- c((avg+err*1.96)[my.count],(avg-err*1.96)[my.count.rev])
x.polygon <- c(my.count, my.count.rev)
polygon(x.polygon, y.polygon.6, col="#00000022", border=NA)
lines(avg,col="black",lwd=0.8,lty=3)
lines((avg+err*1.96),lwd=0.8,lty=3)
lines((avg-err*1.96),lwd=0.8,lty=3)

dev.off()

最佳答案

虽然EPS格式本身不支持半透明,但仍然可以使用cairo_ps() ,自动光栅化半透明区域,并且可以使用参数 fallback_resolution 控制其执行此操作的分辨率。 :

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()

所有非半透明区域都可以很好地保留为矢量图形。

或者更短,你也可以使用:

ggsave("filename.eps", device=cairo_ps, fallback_resolution = 600)

或者使用新的 export 导出到 eps 的功能软件包,刚刚在 CRAN 上发布:

install.packages("export")
library(export)
graph2eps("filename.eps", fallback_resolution = 600)

该软件包还支持许多其他导出格式,包括 Powerpoint ( graph2ppt ),请参阅 ?graph2vector ,还保留了半透明...

关于r - 透明度可以与 PostScript/EPS 一起使用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29321707/

相关文章:

python - 如何在 matplotlib 中完全自定义的位置放置小刻度?

PHP & GD - 透明背景被附近的颜色填充

java - 透明背景上的文物

python - 使用 pyglet 加载图像将一些透明像素变成白色

css - knitr:导出到 html 文件但保持样式

r - 在 R 中剥离向量中的非 A-Z 字符

r - R中线性回归截距的置信区间

将数字四舍五入到前 3 位数字(以数字开头!= 0)

r - 绘制 xts 对象 : 'x' must be a time-series object 时出错

python 统计模型 : tukey HSD plot not working