How to display only a left and bottom box border in matplotlib?


Question

I'm trying to plot data in matplotlib. I would like to hide the upper and right parts of the box. Does anyone know how to do this?

Thanks for your help

1
22
3/17/2012 2:21:10 PM

Accepted Answer

Just set the spines (and/or ticks) to be invisible.

E.g.

import matplotlib.pyplot as plt

fig, ax = plt.subplots()

ax.spines['right'].set_visible(False)
ax.spines['top'].set_visible(False)

plt.show()

enter image description here

If you want to hide the ticks on the top and left as well, just do:

ax.xaxis.set_ticks_position('bottom')
ax.yaxis.set_ticks_position('left')

enter image description here

47
3/17/2012 3:48:33 PM

Consider also this option:

import matplotlib.pyplot as plt
# Create your plot with your code
# Then extract the spines and make them invisible
ax = plt.gca()
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
plt.show() # Show your plot

or just

import matplotlib.pyplot as plt
# Create your plot with your code
# Then extract the spines and make them invisible
plt.gca().spines['right'].set_color('none')
plt.gca().spines['top'].set_color('none')
plt.show() # Show your plot

Hope it helps somebody


Licensed under: CC-BY-SA with attribution
Not affiliated with: Stack Overflow
Icon