【问题标题】:Reduce pdf file size of plot in R减少R中绘图的pdf文件大小
【发布时间】:2011-12-15 14:02:21
【问题描述】:

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

jj = ts(read.table("overlap.txt"))
pdf(file = "plot.pdf")
plot(jj, ylab="", main="")
dev.off()

结果如下:

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

【问题讨论】:

  • 好吧,您只是绘制了一些未知(大?)数量的线段。一般来说,pdf 是最糟糕的编码方式。您是否尝试过使用 cairo() 生成 eps 或 svg ?
  • 它看起来并不特别庞大。第一个情节看起来有点详细。摘要(jj)说什么?会达到 4e+05 吗?
  • 对于具有大量重复值的变量,可以使用rle 组合一个解决方案,该解决方案将删除重复值并保存更改点的时间坐标......但这将是相当稍微复杂一点,并且不会为不断变化的变量保存任何东西

标签: r plot


【解决方案1】:

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

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

  • printer (300dpi)
  • ebook (150dpi)
  • screen (72dpi)

默认为none。例如要将文件夹mypdfs/ 中的所有PDF 转换为ebook 质量,请使用命令

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

【讨论】:

  • 你能举个例子吗?我不能做tools::compactPDF(filename, qpdf = Sys.getenv("R_QPDF", "qpdf"), gs_cmd = Sys.getenv("R_GSCMD", ""), gs_quality = "screen", gs_extras = character(), ratio = 0.2),因为它失败了。 - - Debian 8.5 中安装的所有必要工具。你需要导入一些额外的东西吗? - - 我觉得这个答案现在存根了。
【解决方案2】:

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

有关其他方向的信息,光栅图像太大,请参阅此answer

【讨论】:

    【解决方案3】:

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

    # take sample of data from dataframe
    sampleNo = 10000
    sampleData <- df[sample(nrow(df), sampleNo), ]
    

    我认为R 中唯一的其他选择是产生一个非向量。在R 之外,您可以使用 Acrobat Professional(不是免费的)来优化 pdf。这可以极大地减小文件大小。

    【讨论】:

    • 如果能得到一个等距的样本号就好了。你只需要一个头/尾。
    【解决方案4】:

    您使用的是哪个版本的 R?在 R 2.14.0 中,pdf() 有一个参数 compress 来支持压缩。我不确定它对您有多大帮助,但还有其他工具可以压缩 PDF 文件,例如 Pdftkqpdf。我在animation 包中有两个包装器,但您可能想直接使用命令行。

    【讨论】:

    • 压缩没有多大帮助。它有一些简单的算法。你不能改变它。对集合进行等距抽样可能最有帮助。
    • 同样压缩默认为TRUE
    【解决方案5】:

    如果不看情节就很难说 - 发布截图?

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

    【讨论】:

    • 还有用于 pdf 的后处理工具来减少过度绘图。
    猜你喜欢
    • 2019-02-13
    • 2011-01-10
    • 2023-04-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多