Tôi có một số dữ liệu bao gồm một số hình ảnh 2D mà tôi muốn hiển thị ở các vị trí [x, y, z] cụ thể liên quan đến nhau bằng cách sử dụng mayavi2 (v4.3.0)
.mayavi - đặt mức [x, y, z] của hình ảnh theo chương trình
From the documentation có vẻ như tôi chỉ có thể thực hiện việc này với mlab.imshow()
. Thật không may, mayavi ném một ngoại lệ khi tôi gọi imshow
chỉ định tham số extent
(AttributeError: 'ImageActor' object has no attribute 'actor'
).
Tôi cũng đã thử đặt trực tiếp dữ liệu x, y và z bằng cách sửa đổi im.mlab_source.x,y,z...
. Thật kỳ lạ, trong khi điều này thay đổi chính xác khoảng cách x và y, nó không làm gì với vị trí z ngay cả khi các thay đổi rõ ràng là im.mlab_source.z
.
Dưới đây là một ví dụ Runnable:
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()