Нанесите стрелку, проходящую через выбранную точку, с помощью FancyArrowPatch. - PullRequest
0 голосов
/ 02 апреля 2019

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

Я пошел и посмотрел на библиотеку FancyArrowPatch из matplotlib, которую я уже использую для построения стрелок, идущих из одной точки в другую. Тем не менее, я не могу использовать его удовлетворительным образом.

Например, в следующем коде я пытаюсь построить стрелку, идущую от (-10,0) до (0,9) и проходящую через (-5,9).

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


style = "simple,tail_width=10,head_width=30,head_length=60"
kw = dict(arrowstyle=style,color="#49107C")
Arrow = mpatch.FancyArrowPatch(path=mpath.Path([(-10,0),(-5,9),(0,9)],
mpath.Path.MOVETO,mpath.Path.CURVE3,mpath.Path.CURVE3]),**kw)
plt.gca().add_patch(Arrow)

После запуска этого кода я не получаю ожидаемого результата: даже если моя стрелка изогнута и фактически начинается с (-10,0) до конца (0,9), она не проходит (- 5,9).

Вот что я получаю: https://i.imgur.com/QwPgmM2.png

* +1012 *enter image description here

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

С другой стороны, я также хотел бы иметь возможность построить изогнутую стрелку, которая после прохождения точки вернется к точной начальной точке (например, «эллиптическая» стрелка, идущая от (0,0) точка, идущая к (2,2) и возвращающаяся к (0,0).)

Заранее благодарю за помощь!

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