How to make an arrow that loops in Matplotlib?


To make an arrow that loops in Matplotlib, we can take the following steps −

  • Set the figure size and adjust the padding between and around the subplots.
  • To make an arrow loop in matplotlib, we can use make_loop() method.
  • Make a wedge instance with center, radius, theta1, theta2 and width.
  • To put the arrow top of the loop, use PathCollection.
  • Add patch collection to the current axes.
  • To display the figure, use show() method.

Example

from matplotlib import pyplot as plt, patches, collections

plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True

def make_loop(center, radius, theta1=-30, theta2=180):
   rwidth = 0.02
   ring = patches.Wedge(center, radius, theta1, theta2, width=rwidth)
   offset = 0.02
   xcent = center[0] - radius + (rwidth / 2)
   left = [xcent - offset, center[1]]
   right = [xcent + offset, center[1]]
   bottom = [(left[0] + right[0]) / 2., center[1] - 0.05]
   arrow = plt.Polygon([left, right, bottom, left])
   p = collections.PatchCollection(
      [ring, arrow],
      edgecolor='orange',
      facecolor='red'
   )
   ax.add_collection(p)
fig, ax = plt.subplots()
make_loop(center=(.5, .7), radius=.1)

plt.show()

Output

Updated on: 17-Jun-2021

109 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements