减少R中绘图的pdf文件大小

减少R中绘图的pdf文件大小,r,plot,R,Plot,我使用以下命令在R中绘制一些数据: jj = ts(read.table("overlap.txt")) pdf(file = "plot.pdf") plot(jj, ylab="", main="") dev.off() 结果如下所示: 我的问题是,我得到的pdf文件相当大(25Mb)。这是减少文件大小的一种方法吗?JPEG不是一个选项,因为我需要一个矢量图形。你画了很多线或点。矢量图像格式(如pdf、ps、eps、svg等)维护有关所有这些点、线或其他增加复杂性的项目的逻辑信息,随着点

我使用以下命令在R中绘制一些数据:

jj = ts(read.table("overlap.txt"))
pdf(file = "plot.pdf")
plot(jj, ylab="", main="")
dev.off()
结果如下所示:


我的问题是,我得到的pdf文件相当大(25Mb)。这是减少文件大小的一种方法吗?JPEG不是一个选项,因为我需要一个矢量图形。

你画了很多线或点。矢量图像格式(如pdf、ps、eps、svg等)维护有关所有这些点、线或其他增加复杂性的项目的逻辑信息,随着点数的增加,这些信息会转换为大小和绘图时间。一般来说,矢量图像在许多方面都是最好的,最紧凑,比例最好,而且复制质量最高。但是,如果图形元素的数量变得非常大,那么最好使用光栅图像格式,如png。当您切换到光栅时,最好了解您想要的图像大小,包括像素和打印测量值,以便生成最佳图像


有关另一个方向的信息,如光栅图像太大,请参见此。

如果看不到绘图的样子,很难判断-发布屏幕截图


我怀疑它有很多非常详细的线条,而且大部分信息可能是不可见的——很多东西重叠或非常小的细节。尝试从一个维度或另一个维度细化数据。我怀疑您会丢失可见信息。

减少文件大小的一种方法是减少您拥有的值的数量。假设您有一个名为
df
的数据帧:

# take sample of data from dataframe
sampleNo = 10000
sampleData <- df[sample(nrow(df), sampleNo), ]
#从数据帧中获取数据样本
sampleNo=10000

sampleData您使用的是哪个版本的R?在R2.14.0中,
pdf()
有一个参数
compress
来支持压缩。我不确定它对您有多大帮助,但也有其他压缩PDF文件的工具,如和。我在
动画
软件包中为它们提供了两个包装器,但您可能希望直接使用命令行。

看看
工具::compactPDF
-您需要安装qpdf或ghostscript,但这会对pdf文件大小产生巨大影响

如果从磁盘读取PDF文件,则GostScript质量有3个选项(
gs_quality
),如下所示:

  • 打印机
    (300dpi)
  • 电子书
    (150dpi)
  • 屏幕
    (72dpi)
默认值为
none
。例如,要将文件夹
mypdfs/
中的所有PDF转换为
ebook
质量,请使用以下命令


tools::compactPDF('mypdfs/',gs_quality='ebook')

您刚刚绘制了一些未知(大量?)的线段。一般来说,pdf是最糟糕的编码方式。您是否尝试过使用
cairo()
生成eps或svg?它看起来并不特别庞大。第一个情节看起来有点详细。摘要(jj)是怎么说的?这会上升到4e+05吗?对于具有大量重复值的变量,可以使用
rle
组合一个解决方案,该解决方案将删除重复值并保存变化点的时间坐标。。。但是,这将是相当复杂的一点,并且不会为不断变化的变量节省任何东西。还有PDF的后处理工具,以减少过度抽签。你能举一个例子吗?我不能做
tools::compactPDF(文件名,qpdf=Sys.getenv(“R_qpdf”,“qpdf”),gs_cmd=Sys.getenv(“R_GSCMD”),gs_quality=“screen”,gs_extras=character(),ratio=0.2)
,因为它失败了。--Debian 8.5中安装的所有必要工具。你需要额外的东西吗我现在感觉到了这个答案。如果能得到一个等距的样本号就太好了。你只取了一个头/尾巴。压缩没有多大帮助。它有一些简单的算法。你不能改变它。对集合进行等距采样可能最有帮助。默认情况下,压缩是
TRUE