Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Hide axis lines and labels in matplotlib except min/max y-label

I have plot in Python matplotlib:

from matplotlib import pyplot as plt

data = [1, 5, 2, 1, 1, 4, 3, 1, 7, 8, 9, 6, 1]
plt.plot(data)

Is there any way to hide axis lines and labels except min and max y-axis label? I know about plt.axis("off"), however I would like to show first and last label on y-axis.

The current plot is on the left of the image below and desired plot on the right.

enter image description here

like image 278
Michal Avatar asked Dec 23 '22 17:12

Michal


1 Answers

Here you format the borders and ticks to hide them and then set the y-ticks explicitly:

from matplotlib import pyplot as plt

data = [1, 5, 2, 1, 1, 4, 3, 1, 7, 8, 9, 6, 1]

fig, ax = plt.subplots()
ax.plot(data)
for side in ['top','right','bottom','left']:
    ax.spines[side].set_visible(False)
ax.tick_params(axis='both',which='both',labelbottom=False,bottom=False,left=False)
ax.set_yticks([min(y),max(y)]) 

enter image description here

like image 71
Tom Avatar answered May 20 '23 19:05

Tom