微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

通过过滤隐藏的对象来减少绘图的PDF文件大小

生成R中许多点的散点图时(例如使用ggplot()),可能有许多点落后于其他点并且根本不可见.例如,见下图:

这是几十万个点的散点图,但大多数都落后于其他点.问题是当将输出转换为矢量文件(例如PDF文件)时,不可见点会使文件大小变大,并在查看文件增加内存和cpu使用率.

一个简单的解决方案是将输出转换为位图图片(例如TIFF或PNG),但它们会失去矢量质量,并且可能会更大.我尝试了一些在线PDF压缩器,但结果与原始文件大小相同.

有什么好的解决方案吗?例如,某些方法来过滤不可见的点,可能是在生成绘图期间或之后通过编辑PDF文件

解决方法

首先,你可以这样做:
set.seed(42)
DF <- data.frame(x=x<-runif(1e6),y=x+rnorm(1e6,sd=0.1))
plot(y~x,data=DF,pch=".",cex=4)

PDF大小:6334 KB

DF2 <- data.frame(x=round(DF$x,3),y=round(DF$y,3))
DF2 <- DF[!duplicated(DF2),]
nrow(DF2)
#[1] 373429
plot(y~x,data=DF2,cex=4)

PDF大小:2373 KB

通过舍入,您可以控制要删除的值的数量.您只需要修改它来处理不同的颜色.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐