Syntax error How to make an arrow that loops in Matplotlib?

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: 2021-06-17T11:40:03+05:30

167 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements