Matplotlib中不一致的3D颤抖行为

时间:2018-07-31 14:55:33

标签: python python-3.x matplotlib 3d axes

我正在尝试制作具有不同图层的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似乎也不起作用。

enter image description here

0 个答案:

没有答案