我有一些数据,其中包含几个 2D 图像,我想使用mayavi2 (v4.3.0).
从文档看来,我应该只能用mlab.imshow(). imshow不幸的是,当我调用指定extent参数 ( AttributeError: 'ImageActor' object has no attribute 'actor')时,mayavi 会引发异常。
我还尝试通过修改直接设置 x、y 和 z 数据im.mlab_source.x,y,z...。奇怪的是,虽然这正确地改变了 x 和 y 范围,但它对 z 位置没有任何作用,即使发生了im.mlab_source.z明显的变化。
这是一个可运行的示例:
import numpy as np
from scipy.misc import lena
from mayavi import mlab
def normal_imshow(img=lena()):
    return mlab.imshow(img,colormap='gray') 
def set_extent(img=lena()):
    return mlab.imshow(img,extent=[0,100,0,100,50,50],colormap='cool')
def set_xyz(img=lena()):
    im = mlab.imshow(img,colormap='hot')    
    src = im.mlab_source
    print 'Old z :',src.z
    src.x = 100*(src.x - src.x.min())/(src.x.max() - src.x.min())
    src.y = 100*(src.y - src.y.min())/(src.x.max() - src.y.min())
    src.z[:] = 50
    print 'New z :',src.z
    return im
if __name__ == '__main__':
    # this works
    normal_imshow()
    # # this fails (AttributeError)
    # set_extent()
    # weirdly, this seems to work for the x and y axes, but does not change
    # the z-postion even though data.z does change
    set_xyz()