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

How to reduce size of printed eps when plotting large amounts of data

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

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

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

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

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

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

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

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

如果需要,首先对向量进行排序:

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

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

Plot (Big):

This simple tool intercepts data going into a plot and reduces it to the smallest possible set that looks identical given the number of pixels available on the screen.

DSPLOT:

This version of "plot" will allow you to visualize data that has very large number of elements. Plotting large data set makes your graphics sluggish, but most times you don't need all of the information displayed in the plot.

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

matlab2tikz:

This is matlab2tikz, a MATLAB(R) script for converting MATLAB figures into native TikZ/Pgfplots figures.

为了在 LaTeX 中使用,您不必绕过 PostScript,它会生成漂亮的图。 它还提供了一个名为:CLEANFIGURE('minimumPointsDistance', DOUBLE,...) 的功能,可以帮助您减少数据点。 (也许您也可以将其与上述解决方案结合使用。)