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

2024-10-03 23:18:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图动画的顶点环在流体中的演变。这些数据只是一个数组,其中包含粒子的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

如何在动画功能中执行相同的操作? 我试着用图mlab\ U源设置好了,但我没用。我想它想一次得到所有的信息,但我怎么保持颜色呢?有什么建议吗?你知道吗


编辑: 我想说得更清楚一点,这是我的意思的一个可行的例子

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()

它使三个点在一个方向上移动。我怎样才能使它们有不同的颜色?注释掉的代码块是我用来制作不同颜色的单个绘图的,但在动画中不起作用。你知道吗


Tags: infor颜色npfigrange动画res