Программа ниже отображает 3d стрелки. Я устанавливаю цвет для стрелок в зависимости от высоты (координата z).
ЧТО РАБОТАЕТ: Валы со стрелками получают правильный цвет
ПРОБЛЕМА: Головки стрелок (полностью или частично) приобретают другой цвет. Уродливый.
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D # noqa: F401 unused import
import matplotlib.cm as cm
n = 5
n3 = n*n*n
u, v, w = np.arange(n3), np.arange(n3), np.arange(n3) # Positions
x, y, z = np.arange(n3), np.arange(n3), np.arange(n3) # Vector components
colors = [(0, 0, 255)]*n3
mid = n/2
for i in range(n):
for j in range(n):
for k in range(n):
ii = i*n*n + j*n + k
u[ii], v[ii], w[ii] = -(j-mid), i-mid, 0 # Whorl
x[ii], y[ii], z[ii] = i, j, k
colors[ii] = (1, 0, 0)
if abs(k-(n-1)/2) < 1.1: colors[ii] = (0, 1, 0)
if abs(k-(n-1)/2) < 0.1: colors[ii] = (0, 0, 1)
figure = plt.figure()
axes = figure.gca(projection='3d') # gca = get/create current axes
q = axes.quiver(x, y, z, u, v, w, color=colors, length = 0.5, normalize=True)
plt.show() # Finally display the plot
Выход: