在 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 中保存复杂绘图时遇到问题的主要内容,如果未能解决你的问题,请参考以下文章