假设通过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文件吗?
答案 0 :(得分:1)
您当然已经设法为SVG渲染器找到了良好的压力测试:)
您的SVG包含似乎完全不必要的剪辑路径,该路径应用于每个数据点。
如果我用一组点包围这些点,然后将剪切路径应用于这组点,则渲染时间将大大减少。
如果我完全删除该剪辑路径,则会得到:
不幸的是,这些更改无助于Inkscape渲染时间,但希望它能以某种方式帮助您。如果您需要更快的渲染时间,则可能需要执行Robert所说的方法,并以某种方式减少数据点的数量。