Python和科学计算认证群组  - 讨论区

标题:请问如何绘制这样的三维图?& mayavi的使用与书中有不同?

2014年03月28日 星期五 00:27

请问如何绘制这样的三维图?

 

 

 

 

 

 

 

 

我觉得用mayavi应该可以。

今天试了一下,不知道从哪个版本开始,mayavi的用法跟RY大哥的书《python科学计算》里所讲的有了些差异。
我使用pythonxy2.7.5.1,spyder。下面是我遇到的一点问题:
下面两个语句可以导入mlab:
from enthought.mayavi import mlab
import mayavi.mlab as mlab
但是,都会报错:
....
sip.setapi('QString', 2)
ValueError: API 'QString' has already been set to version 1
因此我把这句话注释了。再运行,还报错:
sip.setapi('QVariant', 2)
ValueError: API 'QVariant' has already been set to version 1
我又把这句话注释了。
然后就可以运行了!!

运行书中图10-7的例子,可是结果却不太一样,运行出来的三维图好像在三维图中包括了黑色的网格线,样子比较丑。


而且控制窗口依然显示有错误:
Traceback (most recent call last):
  File "C:\Python27\lib\site-packages\traits\trait_notifiers.py", line 381, in call_3
    self.handler( object, old, new )
  File "C:\Python27\lib\site-packages\tvtk\tvtk_classes.zip\tvtk_classes\camera.py", line 82, in _view_plane_normal_changed
    self._do_change(self._vtk_obj.SetViewPlaneNormal,
AttributeError: SetViewPlaneNormal

2014年03月28日 星期五 06:25

你单独运行程序试试看,不在Spyder下运行。

另外你的tvtk和mayavi的版本是多少?

2014年03月28日 星期五 09:47

直接运行的结果和在spyder里运行结果是一样的。

RY大哥,您说的tvtk和mayavi应该都是和pythonxy一起装的吧,我的pythonxy是2.7.5.1

vtk版本5.10.1-3
mayavi版本:4.3.0

事实上,我试过pythonxy2.7的好几个版本,都存在这样的问题。

除了使用mayavi外,我还有别的更好的选择吗?

2014年03月28日 星期五 19:26

这里有个解决办法:

http://stackoverflow.com/questions/19477437/attributeerror-in-tvtk-about-setviewplanenormal

I found a way to get rid of the error but it is rather DIRTY: in PythonDIR\Lib\site-packages\tvtk_classes.zip\tvtk_classes\camera.py edit function _view_plane_normal_changed (line 81), comment the line inside self._do_change(self._vtk_obj.SetViewPlaneNormal, self.view_plane_normal) and add return. This solution is really temporary and I'm still looking for clean solution !

 

2014年03月29日 星期六 10:38

也没有解决啊???
没啥变化,还是老样子。我得放弃mayavi了…

2014年03月29日 星期六 13:02

我是用的winpython,

然后从

http://www.lfd.uci.edu/~gohlke/pythonlibs/

下载ETS安装的,没有出现过这种问题。

2014年04月01日 星期二 10:28

RY大哥,我想跟您学习,也是安个winpython,再装ets.
可是我卸载了pythonxy,装上了winpython,再装ets的时候竟然提示我

Python version 2.7 required, which was not found in the registry

不应该啊,在winpython的目录下面已经把python2.7.6.amd64装上了呀!而且winpython也可以用了。
接下来我该怎么办啊?

2014年04月02日 星期三 19:06

winpython下安装新的扩展库使用它自带的WinPython Control Panel.exe,

运行WinPython Control Panel.exe

然后点add packages按钮,选择你下载的ets安装包,然后点Install packages按钮即可。

winpython是便携的,其实你不需要卸载python(x,y),运行winpython目录下的exe文件,就都会使用它提供的Python环境。可以使用WinPython Control Panel.exe将winpython环境设置为默认的Python环境

 

如下红色区域有误,请重新填写。

    你的回复:

    请 登录 后回复。还没有在Zeuux哲思注册吗?现在 注册 !

    Zeuux © 2024

    京ICP备05028076号