如何在绘制大量数据时减小打印eps的大小

时间:2015-01-14 13:27:43

标签: matlab plot filesize scatter

我正在绘制并将大型数据集打印到eps:

plot(Voltage,Torque,'b.')
print -depsc figure.eps

通过这些数百万个数据点,我将拟合一个图表。但是由于电压和扭矩矢量的大小很大,我的eps文件是64.5 MB。

然而,大多数绘制点位于其他点之上或非常接近。如何减少.eps的大小,同时对图表中数据的显示方式影响有限?我可以使matlab检测并删除与其他已经绘制的点足够接近的数据点吗?

虽然它是散点图,但我没有使用散点图,因为所有点都应该具有相同的大小和颜色。是否可以使用散点图来删除可视的过时数据点?

2 个答案:

答案 0 :(得分:2)

除了stackoverflow之外,File Exchange始终是开始搜索解决方案的好地方。 在这种情况下,我发现了以下提交内容:

<强> Plot (Big)

  

这个简单的工具拦截进入绘图的数据,并将其缩小到可能的最小集合,看起来在屏幕上可用的像素数量相同。

<强> DSPLOT

  

这个版本的&#34;情节&#34;将允许您可视化具有大量元素的数据。绘制大型数据集会使您的图形变得迟钝,但大多数情况下您不需要绘制图中显示的所有信息。

如果您最终在 LaTeX 文件中使用该图,则应考虑使用

<强> matlab2tikz

  

这是matlab2tikz,一个用于将MATLAB数字转换为原生TikZ / Pgfplots数字的MATLAB(R)脚本。

LaTeX 中使用时,你不必绕道PostScript,它将成为美丽的情节。 它还提供了一个名为CLEANFIGURE('minimumPointsDistance', DOUBLE,...)的函数,它可以帮助您减少数据点。 (可能你也可以将它与上述解决方案结合起来。)

答案 1 :(得分:1)

如果你的矢量Voltage已经排序并且或多或少有规律地间隔,你可以简单地绘制一小部分数据:

plot(Voltage(1:step:end),Torque(1:step:end),'b.')

step设置为在eps文件的准确性和大小之间找到正确的权衡。

如果需要,首先使用以下内容对矢量进行排序:

[Voltage,I] = sort(Voltage); Torque = Torque(I);