我试图四处寻找解决问题的方法,有些回答指出Matplotlib的zorder
有错误,而其他人则说它适用于他们。无论如何,这是引起问题的图像和代码:
import matplotlib.pyplot as plt
import numpy as np
from mpl_toolkits.mplot3d import Axes3D
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.set_xlim(0, 7)
ax.set_ylim(0, 7)
ax.set_zlim(0, 7)
ax.view_init(elev=20, azim=32)
# u
ax.quiver(0, 0, 0, 1, 1, 0, color='C0', arrow_length_ratio=0.1,
label=r'$\vec{u}$', zorder=10)
# v
ax.quiver(0, 0, 0, 2, 2, 0, color='C1', arrow_length_ratio=0.1,
label=r'$\vec{v}$', zorder=0)
plt.legend()
ax.set_xlabel(r'$x$', fontsize='large')
ax.set_ylabel(r'$y$', fontsize='large')
ax.set_zlabel(r'$z$', fontsize='large')
plt.show()
此代码产生以下图像:
我希望蓝色箭头位于橙色箭头的上方。指定zorder
似乎无效。有人会友好地给我一些提示和建议吗?
谢谢。
答案 0 :(得分:0)
一个可能使您 U 矢量脱颖而出的解决方案是更改其厚度,使其略大于矢量 V 。这样做的方法是使用linewidths
参数,请参见Change size of arrows using matplotlib quiver。在您的情况下,例如:
# u
ax.quiver(0, 0, 0, 1, 1, 0, color='C0', arrow_length_ratio=0.1, linewidths=2.5,
label=r'$\vec{u}$', zorder=10)
# v
ax.quiver(0, 0, 0, 2, 2, 0, color='C1', arrow_length_ratio=0.1, linewidths=1.,
label=r'$\vec{v}$', zorder=0)
尽管,我意识到这可能与您想做的不完全一样。