Skip to content
Related Articles

Related Articles

Matplotlib.patches.ArrowStyle class in Python

Improve Article
Save Article
Like Article
  • Last Updated : 27 Apr, 2020

Matplotlib is an amazing visualization library in Python for 2D plots of arrays. Matplotlib is a multi-platform data visualization library built on NumPy arrays and designed to work with the broader SciPy stack.


The matplotlib.patches.ArrowStyle class is a container class that defines many arrowstyle classes, that are used to make an arrow path along a provided path. These are primarily used with FancyArrowpatch.

Syntax: class matplotlib.patches.ArrowStyle

The below subclasses are defined for various arrowstyle;

CurveB->head_length=0.4, head_width=0.2
BracketB-[widthB=1.0, lengthB=0.2, angleB=None
CurveFilledB-|>head_length=0.4, head_width=0.2
CurveA<-head_length=0.4, head_width=0.2
CurveAB<-|>head_length=0.4, head_width=0.2
CurveFilledA<|-head_length=0.4, head_width=0.2
CurveFilledAB<|-|>head_length=0.4, head_width=0.2
BracketA]-widthA=1.0, lengthA=0.2, angleA=None
BracketAB]-[widthA=1.0, lengthA=0.2, angleA=None, widthB=1.0, lengthB=0.2, angleB=None
Fancyfancyhead_length=0.4, head_width=0.4, tail_width=0.4
Simplesimplehead_length=0.5, head_width=0.5, tail_width=0.2
Wedgewedgetail_width=0.3, shrink_factor=0.5
BarAB|-|widthA=1.0, angleA=None, widthB=1.0, angleB=None

Example 1:

import matplotlib.pyplot as plt
from matplotlib.patches import ArrowStyle
plt.figure(1, figsize =(9, 9))
ax = plt.subplot(111)
            xy =(0.2, 0.2), xycoords ='data',
            xytext =(0.8, 0.8), textcoords ='data',
            arrowprops = dict(arrowstyle ="Wedge",
                            connectionstyle ="arc3"), 


Example 2:

import matplotlib.patches as mpatch
import matplotlib.pyplot as plt
figheight = 8
fig = plt.figure(figsize =(9, figheight), dpi = 80)
fontsize = 0.4 * fig.dpi
def make_boxstyles(ax):
    styles = mpatch.BoxStyle.get_styles()
    for i, (stylename, styleclass) in enumerate(sorted(styles.items())):
                (float(len(styles)) - 0.5 - i)/len(styles),
                ha ="center",
                size = fontsize,
                transform = ax.transAxes,
                bbox = dict(boxstyle = stylename, 
                            fc ="g", ec ="r"))
def make_arrowstyles(ax):
    styles = mpatch.ArrowStyle.get_styles()
    ax.set_xlim(0, 4)
    ax.set_ylim(0, figheight)
    for i, (stylename, styleclass) in enumerate(sorted(styles.items())):
        # /figheight
        y = (float(len(styles)) - 0.25 - i
        p = mpatch.Circle((3.2, y), 0.2, fc ="r")
        ax.annotate(stylename, (3.2, y),
                    (2., y),
                    # xycoords ="figure fraction",
                    # textcoords ="figure fraction",
                    ha ="right", va ="center",
                    size = fontsize,
                    arrowprops = dict(arrowstyle = stylename,
                                    patchB = p,
                                    shrinkA = 5,
                                    shrinkB = 5,
                                    fc ="w", ec ="r",
                                    connectionstyle ="arc3, rad =-0.05",
                    bbox = dict(boxstyle ="square", fc ="g"))
ax1 = fig.add_subplot(121, frameon = False, xticks =[], yticks =[])
ax2 = fig.add_subplot(122, frameon = False, xticks =[], yticks =[])


My Personal Notes arrow_drop_up
Recommended Articles
Page :

Start Your Coding Journey Now!