Matplotlib: как добавить стрелку в патч пути? - PullRequest
0 голосов
/ 30 апреля 2018

У меня есть несколько патчей путей.

pp1 = mpatches.PathPatch(Path([(start_x, height), (middle_x, middle_y), (end_x, height)],[Path.MOVETO, Path.CURVE3, Path.CURVE3]),fc="none", transform=ax1.transData)
ax1.add_patch(pp1)

Что дает мне изогнутые края, как показано на рисунке ниже: enter image description here

Как я могу добавить стрелки в конец / начало / середину этих изогнутых краев?

Я немного искал и вычислял другие патчи, которые содержат стрелки. Я попробовал их, но выровнять их с моим патчем пути оказалось нетривиально. Интересно, есть ли более простой способ добавить стрелку к моим краям?

1 Ответ

0 голосов
/ 30 апреля 2018

Я думаю, что добавление стрелок в середине произвольной кривой может быть тривиальным, как показано этим ответом .

Тем не менее, вы можете использовать patches.FancyArrowPatch, чтобы стрелки были на обоих концах кривой:

import matplotlib.path as mpath
import matplotlib.patches as mpatches
import matplotlib.pyplot as plt

Path = mpath.Path

fig, ax = plt.subplots()
fap1 = mpatches.FancyArrowPatch(path=Path([(0, 0), (1, 1), (1, 0)],
                                         [Path.MOVETO, Path.CURVE3, Path.CURVE3]),
                                arrowstyle="<|-|>,head_length=10,head_width=10")
ax.add_patch(fap1)
ax.set_xlim(-1, 2)
ax.set_ylim(-1, 2)

plt.show()

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...