【发布时间】:2014-02-03 07:03:30
【问题描述】:
所以我正在尝试使用 Mayavi 保存图形。代码如下所示。
mlab.figure(1, bgcolor=(1, 1, 1), fgcolor=(0.5, 0.5, 0.5))
mlab.contour3d(i, a, d, abs(ber), contours=10, opacity=0.5, colormap='hot')
mlab.outline()
mlab.colorbar(orientation='vertical')
mlab.axes(color=(0.5,0.5,0.5), line_width=4, xlabel='I', ylabel='A', zlabel='D')
mlab.move(forward=-4, right=-4)
mlab.savefig('abc.png', figure=mlab.gcf(), magnification=2)
mlab.show()
数据可以在屏幕上呈现。例如:
但不幸的是,当我执行savefig() 时,似乎出现了问题。我得到一个空白的数字。我什至尝试做一个screenshot() 并使用pylab.imshow() 绘制它,但结果也是空白。我什至尝试使用 mlab 窗口上的保存按钮直接保存,即使这给出了一个空白图像!
我已经检查过 [mayavi mlab.savefig() gives an empty image],但这似乎并没有奏效。
我开始怀疑后端有问题。我在带有 Qt 后端的 Windows 7 系统上使用 wxPython。我还尝试了几乎所有我拥有的后端,即使是普通的非交互式控制台,它也不起作用。
有人有这方面的经验吗?
【问题讨论】:
-
假设我为您的数据输入了一些随机数据,那么您拥有的代码 sn-p 对我来说就可以了。 “我正在使用 wxPython ... 带有 Qt 后端”是什么意思
-
据我了解,
savefig()函数只是直接从屏幕上截屏。后端在屏幕上显示图像。如果捕获过程和显示过程之间存在差异,则图像将不会被捕获。在程序使用直接硬件访问直接渲染之前,我已经在视频捕获中看到了这一点。放大倍数 = 2,我看到屏幕放大图像并进行 capture 但数据全为 0。我想也许这样的事情正在发生。不过不确定。 -
是的。但是,如果你使用的是 wxpython,那么我想你会使用 wx 后端。 (除非你想说你有一个使用嵌入在 wxpython 应用程序中的 Qt 后端的 mayavi 窗口?)我可能无法帮助你,但如果你这样做
magnification=1会发生什么? -
实际上我的 wxPython 带有许多预配置的控制台,其中一个使用 Qt 后端。它说 IPython (Qt)。所以这就是我用来运行程序的东西。我通常使用它,因为默认的 wx 后端会给 pylab 交互带来问题。这不应该发生,但确实发生了。我的安装有些东西搞砸了!我会尝试重新安装,看看是否有帮助。
-
magnification=1不会改变任何东西。最初我没有那个参数。我把magnification=2简单地作为一个额外的检查......
标签: python mayavi mayavi.mlab