Сделать форму наконечника стрелы симметричной независимо от угла наклона стрелки в matplotlib - PullRequest
0 голосов
/ 02 октября 2018

Следующий код дает рисунок ниже.Форма стрелки зависит от угла наклона стрелки.Как я могу сделать все наконечники стрел одинаковой симметричной формы?Я специально прошу 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()

arrow head demo

1 Ответ

0 голосов
/ 02 октября 2018

Это невозможно с 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()

enter image description here

Стрелки в настоящее время немного недокументированы, нодо сих пор существует план по написанию некоторого полного учебника или руководства.

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