我想制作一个简单的箭头和一个双头箭头。我使用以下方法制作一个简单的箭头,但我怀疑这是最简单的方法:
import matplotlib.pyplot as plt
arr_width = .009 # I don't know what unit it is here.
fig = plt.figure()
ax1 = fig.add_subplot(111)
ax1.plot(range(10))
ax1.arrow(1, 1, 0, .5, width = arr_width, head_width = 3 * arr_width,
head_length = 9 * arr_width)
plt.show()
我找不到如何用这种方法制作两个头箭。
答案 0 :(得分:14)
您可以使用带有空白文字注释的annotate
方法创建一个双头箭头,并将arrowprops
dict设置为包含arrowstyle='<->'
,如下所示:
import matplotlib.pyplot as plt
plt.annotate(s='', xy=(1,1), xytext=(0,0), arrowprops=dict(arrowstyle='<->'))
plt.show()
答案 1 :(得分:2)
您可以使用matplotlib.patches.FancyArrowPatch
绘制一个双向箭头。此类允许指定arrowstyle
:
import matplotlib.patches as patches
p1 = patches.FancyArrowPatch((0, 0), (1, 1), arrowstyle='<->', mutation_scale=20)
p2 = patches.FancyArrowPatch((1, 0), (0, 1), arrowstyle='<|-|>', mutation_scale=20)
这将产生以下箭头:
答案 2 :(得分:0)
您可以沿着同一条线但朝相反的方向绘制两个单头箭头。
import matplotlib.pyplot as plt
# Arrows
plt.arrow(0.3, 0.1, 0.4, 0.7, color='red', head_length = 0.07, head_width = 0.025, length_includes_head = True)
plt.arrow(0.7, 0.8, -0.4, -0.7, color='red', head_length = 0.07, head_width = 0.025, length_includes_head = True)
plt.show()
答案 3 :(得分:0)
您可以通过绘制两个重叠的plt.arrow
来创建双向箭头。下面的代码有助于做到这一点。
import matplotlib.pyplot as plt
plt.figure(figsize=(12,6))
# red arrow
plt.arrow(0.15, 0.5, 0.75, 0, head_width=0.05, head_length=0.03, linewidth=4, color='r', length_includes_head=True)
# green arrow
plt.arrow(0.85, 0.5, -0.70, 0, head_width=0.05, head_length=0.03, linewidth=4, color='g', length_includes_head=True)
plt.show()
结果是这样的:
您可以看到先绘制了红色箭头,然后绘制了绿色箭头。当您提供正确的坐标时,它看起来像是双头的。