Mayavi: mlab.axes() menyebabkan pengecualian di Mayavi 4.5.0

Dibuat pada 6 Jan 2017  ·  9Komentar  ·  Sumber: enthought/mayavi

Hai, baru-baru ini, saya memperbarui Mayavi dari 4.4.4 menjadi 4.5.0. Setelah pembaruan, saya mengamati pengecualian ketika saya menggunakan fungsi mlab axes() . Berikut adalah kode pengujian (garis yang menyebabkan kesalahan ditunjukkan oleh komentar):

from mayavi import mlab
from numpy import pi, sin, cos, mgrid
dphi, dtheta = pi/250.0, pi/250.0
[phi,theta] = mgrid[0:pi+dphi*1.5:dphi,0:2*pi+dtheta*1.5:dtheta]
m0 = 4; m1 = 3; m2 = 2; m3 = 3; m4 = 6; m5 = 2; m6 = 6; m7 = 4;
r = sin(m0*phi)**m1 + cos(m2*phi)**m3 + sin(m4*theta)**m5 + cos(m6*theta)**m7
x = r*sin(phi)*cos(theta)
y = r*cos(phi)
z = r*sin(phi)*sin(theta)
s = mlab.mesh(x, y, z)
mlab.axes(color=(0.9,0.9,0.9))       # LINE CAUSING ERROR
mlab.show()

Ketika menjalankan kode di atas di lingkungan Windows dan anaconda, saya melihat pesan kesalahan berikut:

Pesan pop-up (kotak):

Exception
In c:\anaconda\lib\site-packages\mayavi-4.5.0-py2.7-win-amd64.egg\tvtk\tvtk_base.py:569
TypeError: SetInputData argument 1:method requires a vtkDataSet, a vtkPolyDataNormals was provided. (in _wrap_call)

Pesan di jendela konsol:

No handlers could be found for logger "mayavi.core.common"
Exception occurred in traits notification handler.
Please check the log file for details.
Exception occurred in traits notification handler for object: <mayavi.tools.decorations.Axes object at 0x0000000011AC00A0>, trait: extent, old value: [0 0 0 0 0 0], new value: [-1.53801118  1.53801118 -2.          2.27326963 -1.53801118  1.53801118]
Traceback (most recent call last):
  File "C:\Anaconda\lib\site-packages\traits\trait_notifiers.py", line 340, in __call__
    self.handler( *args )
  File "C:\Anaconda\lib\site-packages\mayavi-4.5.0-py2.7-win-amd64.egg\mayavi\tools\decorations.py", line 373, in _extent_changed
    axes.module_manager.source.outputs[0].bounds
AttributeError: 'PolyDataNormals' object has no attribute 'bounds'

Informasi tambahan

Lingkungan di mana pengecualian di atas terjadi
OS: Windows 10
Instalasi Python: Python 2.7 diinstal menggunakan Anaconda
Paket Mayavi: mayavi 4.5.0 py27_0 menpo
Paket VTK: vtk 7.0.0 py27_0 menpo
Paket PyQt: pyqt 5.6.0 py27_1

Lingkungan di mana kode di atas berjalan OK
OS: Windows 7
Instalasi Python: Python 2.7 diinstal menggunakan Anaconda
Paket Mayavi: mayavi 4.4.4 py27_0 menpo
Paket VTK: vtk 7.0.0 py27_0 menpo
Paket PyQt: pyqt 4.11.4 py27_5

Komentar yang paling membantu

Jika masih menarik, dengan konfigurasi yang mirip dengan Jeitan, saya baru saja mengalami kesalahan yang sama dan menenangkannya dengan mengedit mayavi\modules\axes.py, di update_pipeline, mengubah:
self.configure_input_data(self.axes, src.outputs[0])
ke:
self.configure_input_data(self.axes, src.outputs[0].output)

(Yang pertama adalah tipe PolyDataNormals, yang terakhir adalah PolyData, yang diturunkan dari DataSet.)

Semua 9 komentar

Untuk apa nilainya, saya baru saja menggandakan kesalahan ini dalam kondisi berikut:

OS: Windows 10
Instalasi Python: Python 2.7 diinstal menggunakan Anaconda
Paket Mayavi: mayavi 4.5.0 py27_0
Paket VTK: vtk 6.3.0 py27_1
Paket PyQt: pyqt 4.11.4 py27_4

Jika saya menurunkan versi menggunakan conda install mayavi=4.4 * kodenya berfungsi
Mayavi -> 4.4.0
VTK -> 5.10.1

*Catatan yang tidak terkait - ini menurunkan versi numpy dari 1.10 ke 1.9.3 yang merusak Spyder, jadi Anda harus memutakhirkannya secara manual

Saya memiliki masalah yang sama di sini. Tidak ada yang punya petunjuk?

Jika masih menarik, dengan konfigurasi yang mirip dengan Jeitan, saya baru saja mengalami kesalahan yang sama dan menenangkannya dengan mengedit mayavi\modules\axes.py, di update_pipeline, mengubah:
self.configure_input_data(self.axes, src.outputs[0])
ke:
self.configure_input_data(self.axes, src.outputs[0].output)

(Yang pertama adalah tipe PolyDataNormals, yang terakhir adalah PolyData, yang diturunkan dari DataSet.)

Saya juga mengalami masalah.

@jdonegan Saran Anda memperbaiki masalah saya:+1: . Saya rasa Anda harus memposting perbaikan sehingga tidak harus dilakukan secara manual

Saya juga mengalami masalah ini dan perbaikan dari @jdonegan bekerja dengan baik. Akan mengirimkan PR tetapi sepertinya @prabhuramachandran telah mendorong komit yang memperbaikinya, dengan mengganti baris yang dimaksud dengan:
self.configure_input(self.axes, src.outputs[0])

Mungkin masalah ini harus ditutup untuk mencegah kebingungan?

Demikian pula, masalah yang sama dan perbaikan serupa harus diterapkan ke baris 373 di decorations.py:
axes.axes.ranges = \
axes.module_manager.source.outputs[0].output.bounds

untuk memecahkan kesalahan
"AttributeError: objek 'PolyDataNormals' tidak memiliki atribut 'batas'"

Jadi saya percaya komit 996fb25 hanya memperbaiki sebagian dari masalah.

Seperti yang dicatat oleh @TinghuiWang , ini perlu diperbaiki di banyak tempat. Namun, tergantung pada panggilan plot Anda (bagi saya itu plot3d vs points3d), Anda mungkin perlu mengubahnya kembali. Saya memperbaikinya sebagai berikut:

Di mayavi\modules\axes.py pada baris 173, saya berubah

self.configure_input_data(self.axes, src.outputs[0])

ke

data = src.outputs[0] if not hasattr(src.outputs[0], 'output') else src.outputs[0].output
self.configure_input_data(self.axes, data)

Demikian pula di \mayavi\tools\decorations.py pada baris 372 saya canged

axes.axes.ranges = axes.module_manager.source.outputs[0].bounds

ke

src = axes.module_manager.source
data = src.outputs[0] if not hasattr(src.outputs[0], 'output') else src.outputs[0].output
axes.axes.ranges = data.bounds

Tolong diperbaiki ya teman-teman. Kapak sangat dibutuhkan.

Mengikuti metode di atas, saya hanya menyelesaikan sebagian masalah, saya masih memiliki pengecualian:
Exception occurred in traits notification handler for object: <mayavi.tools.decorations.Axes object at 0x11a41ce60>, trait: extent, old value: [0 0 0 0 0 0], new value: [ -2. 17. -2. 17. -4.85316642 6.54683358] NoneType: None

dan tidak ada label sumbu pada gambar.

Ada yang bisa bantu? Terima kasih!

Apakah halaman ini membantu?
0 / 5 - 0 peringkat

Masalah terkait

jan-janssen picture jan-janssen  ·  21Komentar

scottstanie picture scottstanie  ·  4Komentar

kitchoi picture kitchoi  ·  10Komentar

thoth291 picture thoth291  ·  10Komentar

GaelVaroquaux picture GaelVaroquaux  ·  13Komentar