我正在尝试制作具有不同图层的3D图,并在其上放置箭头,但是当指定了不同的z
限制时,箭头会显示在图层下方。如果我更改z
限制,它们就会出现。这是一个最小的例子
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
# coordinates
x = np.tile(np.linspace(-0.4, 0.4, 50), 50)
y = np.repeat(np.linspace(-0.4, 0.4, 50), 50)
# vector data
np.random.seed = 1
vx = 2 * np.random.random(len(x)) - 1
vy = 2 * np.random.random(len(x)) - 1
vz = 2 * np.random.random(len(x)) - 1
norm = np.sqrt(vx ** 2 + vy ** 2 + vz ** 2)
vx, vy, vz = vx / norm, vy / norm, vz / norm
# Plot
f = plt.figure(figsize=(8, 10))
ax = f.add_subplot(111, projection='3d')
arr_fltr = slice(None, None, 17)
# layer at z = 0.8
ax.scatter(x, y, 0.8 * np.ones_like(x),
c=np.zeros_like(vz), cmap='RdYlBu', vmin=-1, vmax=1)
ax.quiver(x[::2], y[::2], .8 * np.ones_like(x[::2]),
vx[::2], vy[::2], vz[::2],
color='k',
length=0.02,
linewidth=0.5)
# layer at z = 0.0
# ax.scatter(x, y, 0.0 * np.ones_like(x),
# c=np.zeros_like(vz), cmap='RdYlBu', vmin=-1, vmax=1)
# ax.quiver(x[::2], y[::2], 0.0 * np.ones_like(x[::2]),
# vx[::2], vy[::2], vz[::2],
# color='k',
# length=0.02,
# linewidth=0.5,
# # zorder=1000
# )
# arrows sometimes show up if changing this
ax.set_zlim(0., 0.8)
我尝试更改zorder
参数,但是即使使用较大的值,箭头仍然不会显示。如果添加第二层,情况会变得更糟。更改pivot
似乎也不起作用。