Mayavi中的时间相关数据

时间:2015-03-13 13:18:02

标签: python numpy multidimensional-array mayavi

假设我有一个像这样的4d numpy数组:my_array[x,y,z,t]

是否有一种简单的方法可以将整个数组加载到Mayavi中,只需选择我要调查的t

我知道可以动画数据,但我想“随时随地”旋转我的数字。

1 个答案:

答案 0 :(得分:1)

可以使用输入框设置对话框,您可以在其中设置t。 你必须使用traits.api,它看起来像这样:

from traits.api import HasTraits, Int, Instance, on_trait_change
from traitsui.api import View, Item, Group
from mayavi.core.ui.api import SceneEditor, MlabSceneModel, MayaviScene

class Data_plot(HasTraits):
  a = my_array
  t = Int(0)
  scene = Instance(MlabSceneModel, ())
  plot = Instance(PipelineBase)

  @on_trait_change('scene.activated')
  def show_plot(self):
    self.plot = something(self.a[self.t]) #something can be surf or mesh or other

  @on_trait_change('t')
  def update_plot(self):
    self.plot.parent.parent.scalar_data = self.a[self.t] #Change the data

  view = View(Item('scene', editor=SceneEditor(scene_class=MayaviScene),
                show_label=False),
                Group('_', 't'),
                resizable=True,
                )

my_plot = Data_plot(a=my_array)
my_plot.configure_traits()

如果您愿意,也可以使用Range命令而不是Int来设置滑块。