В последнее время я использую 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, используя направление вектора, а НЕ его величину.