Mayavi - 基于方向而不是幅度的颜色矢量

时间:2015-06-07 20:32:20

标签: python numpy vector mayavi

我最近一直在使用Mayavi制作一些非常漂亮的矢量图。使用Numpy,我从文件中读取数据(在列中组织为'x y z Vx Vy Vz'),然后使用Mayavi绘制结果:

#Import libraries
from mayavi import mlab
import numpy as np

#Read in data
data = np.loadtxt('filename', float)
x = data[:,0]
y = data[:,1]
z = data[:,2]
Vx = data[:,3]
Vy = data[:,4]
Vz = data[:,5]

#Plot
mlab.quiver3d(x, y, z, Vx, Vy, Vz, mode='arrow', colormap = 'jet')
mlab.show()

这很好,直到我需要绘制标准化的向量。也就是说,所有矢量的幅度都是1. quiver3d函数根据幅度给出矢量的颜色,所以现在每个矢量都是一种颜色。但是,我需要传达的信息是基于向量的方向。

如果有人可以帮我弄清楚如何使用矢量方向而不是它的大小来解决Mayavi中的矢量颜色,我会很高兴。

1 个答案:

答案 0 :(得分:0)

我不相信mayavi有办法轻松做到这一点。但是你可以通过传递对应于颜色的标量值

来实现
x,y,z,u,v,w = data.T
scalars = np.random.random((len(data),))
mlab.quiver3d(x,y,z,u,v,w, scalars=scalars)

现在,如果你想要一些有意义的配色方案,比如R = X,G = Y,B = Z或类似颜色,那么mayavi的设计并不是很好。但请参阅How to directly set RGB/RGBA colors in mayavi