How to draw rectangle outside of the plot frame in Matplotlib

I think a better way is to use the clip_on=False option for Rectangle:

import random
import matplotlib.pyplot as pyplot

x = random.sample(range(50), 50)
y= random.sample(range(50), 50)

fig = pyplot.figure()
ax = pyplot.subplot(111)
ax.scatter(x,y,label="a")
ax.set_aspect('equal')
ax.set_xlim(0,60)
ax.set_ylim(0,60)
ax.plot([0,60], [0, 60], color="k", linestyle="-", linewidth=1.25)

ax.add_patch(pyplot.Rectangle((0,60),60, 10,facecolor="silver",
                              clip_on=False,linewidth = 0))
TITLE = ax.text(26,61, r'$\mathregular{Title}$',fontsize = 14,zorder = 5,
                color="k")
pyplot.show()

This yields a rectangle drawn outside of the axes, without having to resort to extra spaces:

enter image description here

Leave a Comment