Измените источники данных mlab quiver3d & surf без очистки фигуры в скриптах признаков

У меня есть сценарий «Черты и майяви», в котором представлена ​​сценарий mlab и несколько редакторов свойств. Редакторы влияют на то, какие данные отображаются на surface , quiver3d и легенда (Scalar LUT Manager), вызывая мой метод рисования. Каждое изменение вызывает четкую цифру и повторное рисование.

Изучая пример интерактивного диалога plot3d * использует mlab_source.set для изменения данных без очистки фигуры и повторного рисования. В update_plot ():

 if self.plot is None: self.plot = self.scene.mlab.plot3d(x, y, z, t, tube_radius=0.025, colormap='Spectral') else: self.plot.mlab_source.set(x=x, y=y, z=z, scalars=t) 

То, что возвращает моя surface и quiver3d – это mayavi.modules.surface.Surface и mayavi.modules.vectors.Vectors объекты соответственно. Поверхность и LUTManager сообщают нет mlab_source: AttributeError: 'Surface'/'LUTManager' object has no attribute 'mlab_source' . Quiver3d сообщает mayavi.tools.sources.MGlyphSource

1) Как я могу изменить данные / источник на своей surface и scalar LUTManager ?

2) Как правильно изменить данные / источник колчана?

Когда я пытаюсь изменить значения колчана, я получаю TraitError: Cannot set the undefined 'u' attribute of a 'Vectors' object. Это меня озадачивает, потому что я использовал шестизначный инициализатор .

 if self.quiver is None: self.quiver = self.scene.mlab.quiver3d(xyz[:,0], xyz[:,1], xyz[:,2], velocity[:,0], velocity[:,1], velocity[:,2], figure=self.scene.mayavi_scene, scale_factor = self.scale) else: self.quiver.mlab_source.set(x = xyz[:,0], y = xyz[:,1], z = xyz[:,2], u = velocity[:,0], v = velocity[:,1], w = velocity[:,2]) 

В примере plot3d возвращает mayavi.modules.surface.Surface и его объект mlab_sourcemayavi.tools.sources.MLineSource . Поиск документов для MLineSource бесплоден, но внешне дает результаты Enthought Tool Suite 3.2 . Являются ли инструменты Suite текущими?

* self.plot, self.surface и self.quiver объявляются как variable = Instance(PipelineBase) . PipelineBase импортируется из mayavi.core.api .

    One Solution collect form web for “Измените источники данных mlab quiver3d & surf без очистки фигуры в скриптах признаков”

    Основываясь на ваших комментариях:

    Причина, по которой нет ссылки на источник mlab на surface заключается в том, что нет источника mlab. Ваш модуль состоит только из исходного источника vtk, который майави совершенно счастлив сделать чистым. Однако вы сохраняете ссылку на PolyData и поэтому можете редактировать скаляры. (Вы также можете использовать mlab.triangular_mesh который, скорее всего, сделает то, что вы хотите, в то же время представляя промежуточный TriangularMeshSource для управления vtk PolyData).

    Вы можете добраться до LUT с помощью surface.module_manager.scalar_lut_manager .

    И вы также должны получить доступ к источнику уровня mlab для векторов, как в комментариях, я не знаю, в чем проблема с этим, если он еще есть. Использование traitsui не должно иметь эффекта – проблема, вероятно, является конфликтом между майави и вашей объектной моделью. Попробуйте настроить тип объекта ваших майяви как Any .

     
    Interesting Posts for Van-Lav

    Управление регистраторами с протоколом Python

    Одновременная запись в несколько файлов

    Найти самый старый / самый молодой объект datetime в списке

    Удалить импортированный модуль python

    Основные факторы в python

    Образец REGEX для исключения определенной строки

    icui18n: невозможно открыть файл общих объектов: нет такого файла или каталога

    Утилита устаревания FORTRAN в Python. Можно ли использовать `setuptools` и` numpy.distutils`?

    Загрузка большого количества файлов с помощью python

    raw_input вызывает EOFError после создания exe с py2exe

    Получение местоположения на карте Python

    Chaco MultiLinePlot – не может получить простой график для отображения, задаваясь вопросом, не сломался ли пакет?

    Чтение из файла журнала, когда оно записывается с использованием python

    Python Canopy NumPy: запуск кода нажатием «Play» не дает того же результата, что и копирование и вставка кода в командной строке

    Сортировка содержимого словаря по значению и ключу

    Python - лучший язык программирования в мире.