【问题标题】:mlab savefig doesnt save an imagemlab savefig 不保存图像
【发布时间】: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


【解决方案1】:

到这里问题已经解决了 mayavi mlab.savefig() gives an empty image

简单的答案: “这可能与仅使用 matplotlib 导致的问题相同,最好的选择可能是在显示之前保存。”

【讨论】:

  • 即使链接有答案。它有助于复制问题的核心或最重要的部分
  • 谢谢。在重新安装我的 Python 发行版时(出于各种原因),这个问题似乎已经消失了。我不知道到底是什么问题,但现在已经没有了。不过谢谢你的建议。
猜你喜欢
  • 1970-01-01
  • 2018-01-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-21
  • 2018-03-07
相关资源
最近更新 更多