使用mayavi和python进行远程绘图
我有一个很大的文件需要解析并在远程机器上显示,我已经写好了用mayavi来完成这个工作的脚本。现在我想把生成的图像保存为png格式,然后把这个图像复制到本地查看。用matplotlib来做这件事很简单,只需要把后端设置为'Agg',但是用mayavi时我遇到了一些严重的问题。我按照这里的指南操作过:
http://docs.enthought.com/mayavi/mayavi/tips.html
但问题是,单独导入mlab需要访问xdisplay,所以我连虚拟窗口都没法打开,正如建议的那样。
要重现这个问题,可以通过ssh访问一台机器,然后运行一个简单的python脚本,比如:
#!/usr/bin/python
from mayavi import mlab
然后会出现标准的错误信息:
无法访问X显示,$DISPLAY设置正确吗?
如果有人有解决这个问题的方法,或者有其他可以在远程渲染3D图像的方案,我会非常感激。因为matplotlib提供的3D渲染功能对我来说不够用,所以如果有其他可替代mayavi的建议也非常欢迎。
1 个回答
3
如果你在一个 *nix 系统上,并且运行着一个 X 服务器,可以参考文档中关于 使用虚拟帧缓冲区进行渲染 的解决方案,就像 dpinte 上面提到的那样。我之前用这个方法成功地在没有图形界面的情况下运行过 mayavi 脚本。
这个方法的基本思路是启动一个虚拟的 X 服务器,比如 Xvfb,然后在这个虚拟 X 服务器的显示环境中运行 mayavi(虽然这个解释不是特别准确,但大致上可以理解)。