python – 无论matplotlib中的箭头角度如何,都使箭头形状对称

以下代码生成下图.箭头的形状取决于箭头的角度.如何使所有箭头都具有相同的对称形状?我特别要求
Python 3,但欢迎一般的解决方案.

import matplotlib.pyplot as plt
plt.arrow(0, 0, .5, .5, head_width = .1)
plt.arrow(0, 0, .2, .5, head_width = .1)
plt.arrow(0, 0,  0, .5, head_width = .1)
plt.axis((-1, 1, -1 ,1))
plt.show()

《python – 无论matplotlib中的箭头角度如何,都使箭头形状对称》

最佳答案 plt.arrow是不可能的.

我猜plt.arrow仍然存在的原因纯粹是为了向后兼容. matplotlib.patches.FancyArrowPatch可以更好地生成箭头.在你的情节中获得这种FancyArrowPatch的最简单方法是通过plt.annotate.

import matplotlib.pyplot as plt

prop = dict(arrowstyle="-|>,head_width=0.4,head_length=0.8",
            shrinkA=0,shrinkB=0)

plt.annotate("", xy=(.5,.5), xytext=(0,0), arrowprops=prop)
plt.annotate("", xy=(.2,.5), xytext=(0,0), arrowprops=prop)
plt.annotate("", xy=(.0,.5), xytext=(0,0), arrowprops=prop)

plt.axis((-1, 1, -1 ,1))
plt.show()

《python – 无论matplotlib中的箭头角度如何,都使箭头形状对称》

箭头目前有点未被记录,但仍有a plan to write up一些完整的教程或指南.

点赞