在 Octave 中保存复杂绘图时遇到问题

Posted

技术标签:

【中文标题】在 Octave 中保存复杂绘图时遇到问题【英文标题】:Trouble saving complex plots in Octave 【发布时间】:2015-02-19 15:13:17 【问题描述】:

我在 Windows 7 系统上运行 Octave 3.6.4。

我很难将绘图保存为 .png 文件。有点复杂的图(几个子图、大量图例、160 万个数据点)只能使用非常大的图像尺寸保存,而且有时也只能这样。

一个具体的例子(省略了标题和轴标签):

figure (11)
clf ;

subplot (1,2,1) ;
plot (ratingRepeated, (predictions - Ymean)(:), ".k", "markersize", 1) ;
axis([0.5 5.5 -4 8]) ;
grid("on") ;

subplot (1,2,2) ;
plot (ratingRepeated, predictions(:), ".k", "markersize", 1) ;
axis([0.5 5.5 -4 8]) ;
grid("on") ;

用数百万个数据点生成一个漂亮的图。但是使用:

print -dpng figure11

创建仅包含一小部分绘图的图像。有时它有助于使用像这样的非常大的图像:

print -dpng "-S3400,2400" figure11

但大多数 Octave 只是停止,然后在 CTRL+C 后崩溃。

我试过没有成功:

使用 Octave 3.8.x 使用 gnuplot 而不是“fltk”:graphics_toolkit (“gnuplot”) 在保存前关闭除一处以外的所有地块 最大化绘图窗口 高低搜索解决方案

一些较小但可能相关的问题是:丹麦语字符不会出现;显示和/或保存绘图需要几分钟的时间,性能极慢。

任何建议将不胜感激。

【问题讨论】:

【参考方案1】:

我认为您试图以错误的方式解决问题。你有太多的数据点和一个正常的散点图,就像你试图做的那样,不会很好地显示数据的分布。相反,使用某种密度图。只需比较这两个:

x = vertcat (randn (2000000, 1)*3, randn (1000000, 1) +5);
y = vertcat (randn (2000000, 1)*3, randn (1000000, 1) +5);
plot (x, y, ".")

pkg load statistics;
data = hist3 ([x y], [100 100]);
imagesc (data)
axis xy
colormap (hot (124)(end:-1:1,:)) # invert colormap since hot ends in white

您可以使用现有的颜色图之一(请参阅colormap list)或创建您自己的颜色图。最常见的是 jet(不是为了好,而是因为它是默认设置)

colormap (jet (124))

【讨论】:

非常感谢@carandraug,这是一个非常有用的想法。然而,我应该指出,详细但不那么密集的情节也往往会造成麻烦。 Like this one @LasseHjorthMadsen 绘制所有这些点是一项繁重的工作,因为有很多点,即使它们中的大多数会重叠。之前我花了很多时间尝试这样做,直到我发现我看错了问题。 再次感谢@carandraug。需要明确的是:我在只有大约 1700 个数据点的图中遇到了同样的问题

以上是关于在 Octave 中保存复杂绘图时遇到问题的主要内容,如果未能解决你的问题,请参考以下文章

Octave,如何保存绘图图?

关于mac下octave的绘图问题

关于mac下octave的绘图问题

在 Octave 中从 .dat 文件绘图

Julia 中的 PyPlot 仅在代码结束时显示绘图

通过将数字分组到一个范围内在 matlab / octave 中绘图