【发布时间】:2019-11-12 07:48:50
【问题描述】:
假设通过R 生成的SVG 文件表示一个包含大约160000 个数据点且文件大小超过20 MiB 的图形。具体来说,让我们假设这个 SVG 文件包含 160000 个 XML 圆圈定义。例如,请参阅this graph。因此,该文件对于科学项目来说并不是非典型的。
进一步假设您希望在 SVG 编辑器(例如 Inkscape)中对该文件进行后期处理。
我发现,在典型用户系统(x86_64 GNU/Linux,4 个 CPU,20 GiB RAM)上,几乎不可能通过典型的 SVG 编辑器对大于 20MiB 的 SVG 文件进行操作,因为文件几乎没有加载到墨水景观。
我想到了这个问题的几个潜在解决方案,每个都有一个严重的缺点:
事先使用
svgo等工具优化SVG。虽然svgo的应用确实将文件大小减少了大约 20%,但它也弄乱了图形本身(就像上面链接的示例文件所做的那样)。使用不同的文件格式,例如
PDF。但是,Inkscape 等编辑器通常会将 PDF 转换回 SVG。通过 R 中的不同 SVG 渲染器保存图形。但是,基本命令
svg()以及来自 R 包的具有相同名称的命令svglite()都会生成大小大致相同的图形。
有没有人建议如何打开和手动编辑此类包含大量 XML 元素的 SVG 文件?
【问题讨论】:
-
使用 r 对输出进行预处理,以减少点数。
-
@RobertLongson 是的,你的建议被证明是唯一可行的解决方案。