在mayavi中为不同颜色的点设置动画

时间:2018-12-27 07:41:33

标签: python data-visualization vtk mayavi

我正在尝试对流体中顶点环的演化进行动画处理。数据只是一个具有x,y,z信息的粒子数组,然后创建环。为了使它们可视化,我使用mayavi,只需在每个时间步绘制当前位置即可。当试图将所有位置动画化为“电影”时,问题就来了。为了简单绘图,我使用mlab.point3D并循环通过数组,使每个环都有自己的颜色,如下例所示:

N = 0
for i in range(0,N_rings):
    fig = mlab.points3d(res_alpha[0,N:N + ring[i].N_p - 1,0,0], res_alpha[0,N:N + ring[i].N_p - 1,1,0], res_alpha[0,N:N + ring[i].N_p - 1,2,0], scale_factor=0.1, color = ring[i].color)
    N = N + ring[i].N_p

如何在动画功能中执行相同的操作? 我尝试使用fig.mlab_source.set,但是它不起作用。我认为它想一次获得所有信息,但是那我该如何保持颜色呢?有什么建议吗?


编辑: 太清楚了,这是我的意思的有效示例

import numpy as np
from mayavi import mlab

pointsx = [5,5,5]
pointsy = [0,5,10]
z = np.linspace(0, 10, 3)
y = np.linspace(0, 10, 100)
xv, pointsz = np.meshgrid(z, y)
colors = [(1,0,0),(0,1,0),(0,0,1)]

N = 0

"""
N = 0
for i in range(0,3):
    mlab.points3d(pointsx[N], pointsy[N], pointsz[0], scale_factor=0.1, color = colors[i])
    N = N + 1"""

fig = mlab.points3d(pointsx, pointsy, pointsz[0], scale_factor=0.1, color = (1,0,0))
mlab.axes(extent=[0,10,0,10,0,10])

@mlab.animate(delay=1000, ui=True)
def anim():
    for i in range(0,100):
        fig.mlab_source.set(x=pointsx, y=pointsy, z=pointsz[i])
        yield

anim()
mlab.show()

可对一个方向上的三个点进行动画处理。如何使它们具有不同的颜色?注释掉的代码块是我用来制作单张图以使其具有不同颜色的方法,但是在动画中不起作用。

0 个答案:

没有答案