Create a gist now

Instantly share code, notes, and snippets.

What would you like to do?
Arrows on the ends of spines for matplotlib
import matplotlib.pyplot as plt
def arrowed_spines(ax=None, arrow_length=20, labels=('', ''), arrowprops=None):
xlabel, ylabel = labels
if ax is None:
ax = plt.gca()
if arrowprops is None:
arrowprops = dict(arrowstyle='<|-', facecolor='black')
for i, spine in enumerate(['left', 'bottom']):
# Set up the annotation parameters
t = ax.spines[spine].get_transform()
xy, xycoords = [1, 0], ('axes fraction', t)
xytext, textcoords = [arrow_length, 0], ('offset points', t)
ha, va = 'left', 'bottom'
# If axis is reversed, draw the arrow the other way
top, bottom = ax.spines[spine].axis.get_view_interval()
if top < bottom:
xy[0] = 0
xytext[0] *= -1
ha, va = 'right', 'top'
if spine is 'bottom':
xarrow = ax.annotate(xlabel, xy, xycoords=xycoords, xytext=xytext,
textcoords=textcoords, ha=ha, va='center',
arrowprops=arrowprops)
else:
yarrow = ax.annotate(ylabel, xy[::-1], xycoords=xycoords[::-1],
xytext=xytext[::-1], textcoords=textcoords[::-1],
ha='center', va=va, arrowprops=arrowprops)
return xarrow, yarrow
@2t7

This comment has been minimized.

Show comment Hide comment
@2t7

2t7 Oct 24, 2014

Nice piece of code! A usage example would be nice, and maybe a comment on copyright / license

2t7 commented Oct 24, 2014

Nice piece of code! A usage example would be nice, and maybe a comment on copyright / license

@lgblkb

This comment has been minimized.

Show comment Hide comment
@lgblkb

lgblkb May 25, 2016

Agree). Example would be nice.

lgblkb commented May 25, 2016

Agree). Example would be nice.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment