Изогнутая стрелка по кругу MATPLOTLIB - PullRequest
1 голос
/ 14 февраля 2020

Мне нужно нарисовать несколько изогнутых стрелок, которые должны l ie на круге.

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

Есть ли какой-нибудь стиль соединения, который я могу использовать, чтобы получить стрелки нужной мне формы?

Спасибо за любую помощь.

Это пример кода, который я пробовал:

from matplotlib import pyplot as plt, patches
from math import pi, sin,cos

fig,ax=plt.subplots()
ax.set_xlim(-1.05,1.05)
ax.set_ylim(-1.05,1.05)

# reference circle
circ=patches.Circle((0,0),radius=1.0,fill=False,lw=1, color='C0',zorder=10)
ax.add_patch(circ)

style="Simple,tail_width=0.5,head_width=3,head_length=6"
kw = dict(arrowstyle=style, color="C1")

ang1=pi/6
ang2=pi/3
rad=0.17
arc=patches.FancyArrowPatch((cos(ang1),sin(ang1)), (cos(ang2),sin(ang2)),connectionstyle="arc3,rad={}".format(rad),shrinkA=0,shrinkB=0,**kw)
ax.add_patch(arc)

ang1=pi/2
ang2=pi
rad=0.4
arc=patches.FancyArrowPatch((cos(ang1),sin(ang1)), (cos(ang2),sin(ang2)),connectionstyle="angle3, angleA=180, angleB=270",shrinkA=0,shrinkB=0,**kw)
ax.add_patch(arc)

ang1=5*pi/4
ang2=0
rad=0.7
arc=patches.FancyArrowPatch((cos(ang1),sin(ang1)), (cos(ang2),sin(ang2)),connectionstyle="arc3,rad={}".format(rad),shrinkA=0,shrinkB=0,**kw)
ax.add_patch(arc)
ax.axis('off')
ax.set_aspect('equal')

и вот результат:

enter image description here

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