对包含大量元素的SVG文件进行操作

时间:2019-07-01 16:39:51

标签: r xml svg inkscape

假设通过SVG生成的R文件表示一个大约有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渲染器保存图形。但是,来自具有相同名称的R程序包的基本命令svg()和命令svglite()都会生成大约相同的大小。

有人建议如何打开和手动编辑带有大量XML元素的SVG文件吗?

1 个答案:

答案 0 :(得分:1)

您当然已经设法为SVG渲染器找到了良好的压力测试:)

您的SVG包含似乎完全不必要的剪辑路径,该路径应用于每个数据点。

如果我用一组点包围这些点,然后将剪切路径应用于这组点,则渲染时间将大大减少。

  • Chrome:255秒-> 58秒
  • Firefox:188秒-> 14秒

如果我完全删除该剪辑路径,则会得到:

  • Chrome浏览器:27秒
  • Firefox:10秒。

不幸的是,这些更改无助于Inkscape渲染时间,但希望它能以某种方式帮助您。如果您需要更快的渲染时间,则可能需要执行Robert所说的方法,并以某种方式减少数据点的数量。

相关问题