我正在尝试绘制某些输入函数所用的路径(其顶点记录在numpy数组中)
我想为“→→→→”形式的每个顶点添加一个箭头(任何方向标记)以跟踪路径的方向。
我知道FancyArrowPatch会在终端顶点上仅添加一个箭头,形式为:“ ————>”。那就是我想要的不。 [出于超出此问题范围的原因]
当前,我的代码如下:注意,我们无法猜测方向。
def plot_track(self, verts: np.array) -> None:
'''Plot followed track: verts is 2D array: x, y'''
track = Path(verts)
patch = PathPatch(path=track, edgecolor="#FF0000",
fill=False)
self.axs.add_patch(patch)
self.fig.canvas.draw()
self.root.mainloop()
答案 0 :(得分:1)
matplotlib.patches.Arrow
可用于绘制箭头。循环需要访问每个顶点及其后继对象。 FancyArrowPatch
可以使用类似的方法。
import matplotlib.pyplot as plt
from matplotlib.patches import Arrow
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.patches import PathPatch, Path, Arrow
import numpy as np
def plot_track(verts, ax, **kw_args):
'''Plot followed track: verts is 2D array: x, y'''
for xy0, xy1 in zip(verts[:-1], verts[1:]):
patch = Arrow(*xy0, *(xy1 - xy0), **kw_args)
ax.add_patch(patch)
ax.relim()
ax.autoscale_view()
fig, ax = plt.subplots()
t = np.arange(2, 11, 1)
x = t * np.sin(t)
y = t * np.cos(t)
verts = np.vstack([x, y]).T
plot_track(verts - np.array([7, 0]), ax, color='red', fill=True, width=1)
plot_track(verts + np.array([7, 0]), ax, color='red', fill=False, width=1)
plt.show()