我正在绘制并将大型数据集打印到eps:
plot(Voltage,Torque,'b.')
print -depsc figure.eps
通过这些数百万个数据点,我将拟合一个图表。但是由于电压和扭矩矢量的大小很大,我的eps文件是64.5 MB。
然而,大多数绘制点位于其他点之上或非常接近。如何减少.eps的大小,同时对图表中数据的显示方式影响有限?我可以使matlab检测并删除与其他已经绘制的点足够接近的数据点吗?
虽然它是散点图,但我没有使用散点图,因为所有点都应该具有相同的大小和颜色。是否可以使用散点图来删除可视的过时数据点?
答案 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);