对包含大量元素的 SVG 文件进行操作
Operating on SVG files with a large number of elements
假设通过 R
生成的 SVG
文件表示一个包含大约 160000 个数据点且文件大小超过 20 MiB 的图形。具体来说,让我们假设此 SVG 文件包含 160000 XML 个圆形定义。例如,参见 this graph。因此,该文件对于科学项目来说并非非典型。
进一步假设您希望 post 在 SVG 编辑器中处理此文件(例如,Inkscape)。
我发现大于 20MiB 的 SVG 文件几乎不可能通过典型用户系统上的典型 SVG 编辑器进行操作(x86_64 GNU/Linux,4 个 CPU,20 GiB RAM) ,因为文件几乎没有加载到 Inkscape 中。
想到了这个问题的几个可能的解决方案,每个都有一个严重的缺点:
事先使用svgo
等工具优化SVG。虽然 svgo
的应用确实将文件大小减少了大约 20%,但它也弄乱了图表本身(就像上面链接的示例文件所做的那样)。
使用不同的文件格式,例如 PDF
。但是,Inkscape 等编辑器通常会将 PDF 转换回 SVG。
通过 R 中不同的 SVG 渲染器保存图形。但是,基本命令 svg()
以及 R 包中的命令 svglite()
具有相同的名称生成大小大致相同的图表。
对于如何打开和手动编辑此类包含大量 XML 元素的 SVG 文件,有没有人有建议?
您肯定已经找到了一个很好的 SVG 渲染器压力测试:)
您的 SVG 包含似乎完全不必要的剪辑路径,该路径应用于每个数据点。
如果我用一组包围这些点并将剪辑路径应用到这组点,渲染时间会显着减少。
- Chrome:255 秒 -> 58 秒
- Firefox:188 秒 -> 14 秒
如果我完全删除该剪辑路径,我会得到:
- Chrome: 27 秒
- Firefox:10 秒。
不幸的是,这些更改对 Inkscape 中的渲染时间没有帮助,但希望它能以某种方式帮助您。如果您需要比这更快的渲染时间,您可能需要按照罗伯特所说的那样做,并以某种方式减少数据点的数量。
假设通过 R
生成的 SVG
文件表示一个包含大约 160000 个数据点且文件大小超过 20 MiB 的图形。具体来说,让我们假设此 SVG 文件包含 160000 XML 个圆形定义。例如,参见 this graph。因此,该文件对于科学项目来说并非非典型。
进一步假设您希望 post 在 SVG 编辑器中处理此文件(例如,Inkscape)。
我发现大于 20MiB 的 SVG 文件几乎不可能通过典型用户系统上的典型 SVG 编辑器进行操作(x86_64 GNU/Linux,4 个 CPU,20 GiB RAM) ,因为文件几乎没有加载到 Inkscape 中。
想到了这个问题的几个可能的解决方案,每个都有一个严重的缺点:
事先使用
svgo
等工具优化SVG。虽然svgo
的应用确实将文件大小减少了大约 20%,但它也弄乱了图表本身(就像上面链接的示例文件所做的那样)。使用不同的文件格式,例如
PDF
。但是,Inkscape 等编辑器通常会将 PDF 转换回 SVG。通过 R 中不同的 SVG 渲染器保存图形。但是,基本命令
svg()
以及 R 包中的命令svglite()
具有相同的名称生成大小大致相同的图表。
对于如何打开和手动编辑此类包含大量 XML 元素的 SVG 文件,有没有人有建议?
您肯定已经找到了一个很好的 SVG 渲染器压力测试:)
您的 SVG 包含似乎完全不必要的剪辑路径,该路径应用于每个数据点。
如果我用一组包围这些点并将剪辑路径应用到这组点,渲染时间会显着减少。
- Chrome:255 秒 -> 58 秒
- Firefox:188 秒 -> 14 秒
如果我完全删除该剪辑路径,我会得到:
- Chrome: 27 秒
- Firefox:10 秒。
不幸的是,这些更改对 Inkscape 中的渲染时间没有帮助,但希望它能以某种方式帮助您。如果您需要比这更快的渲染时间,您可能需要按照罗伯特所说的那样做,并以某种方式减少数据点的数量。