2011-09-27 68 views
2

我一直在试图使用gnuplot绘制一个包含约500,000个值的数据集。尽管绘图工作进展顺利,但它生成的SVG文件太大(大约25 MB),需要很长时间才能渲染。有什么方法可以改善文件大小?优化Gnuplot的SVG输出

我对SVG文件格式有模糊的理解,我意识到这是因为SVG是一种矢量格式,因此必须单独存储500,000个点。

我也试过Scour并重新打印SVG没有任何成功。

+0

你是什么意思,你试过冲“没有任何成功”?至少,将精度设置为较低的值应该会减小文件大小(但不是渲染时间)。 – Phrogz

回答

3

才能使你SVG文件的时间是成正比的在它的信息量。因此,加速渲染的唯一方法是减少数据量

我认为使用已经生成的SVG文件是一件很乏味的事情。我会建议减少gnuplot绘图的数据量。

也许every或其他一些削减数据可以帮助像数据分割成多条曲线...

+1

使用'every'关键字的一个问题是我认为它可以在数据集中引入别名。为了减少时间序列中的数据量,您通常要删除高频数据,而不是每跳10个数据点。偶尔,'every'关键字可能会产生误导性的图形。 – Tom

+0

@Tom我同意减少情节中的点数可能会引起误解。但我认为这也取决于你想表现出什么情节。有时候,这可能是一个信号的高频率,你仍然可以使用'every'看到^^...我想...... – Woltan

1

我会建议保持它的矢量图形格式,然后选择适合你把它放在文件的决议后来。

这样做的主要原因是,您可能有一天会在海报中使用该图像(例如),并以当前分辨率的数百倍来打印该图像。

我通常会将我的最终pdf转换为djvu格式。

pdf2djvu --dpi=600 -o my_file_600.djvu my_file.pdf 

这让我指定整个文档的分辨率(包括文本),而不是分散在不同的分辨率。

它的缺点是确实需要原始文档的大型pdf。然而,如果你是latex来制作你的原始PDF格式,你可以使用draft选项,直到完成后才能减轻这个影响,这样在你的日常编辑中不会导入图像图像会很烦人)。