Jsg91
Jsg91

Reputation: 465

Removing specific ticks from matplotlib plot

I'm trying to remove the origin ticks from my plot below to stop them overlapping, alternatively just moving them away from each other would also be great I tried this:

enter image description here

xticks = ax.xaxis.get_major_ticks()
xticks[0].label1.set_visible(False)
yticks = ax.yaxis.get_major_ticks()
yticks[0].label1.set_visible(False)

However this removed the first and last ticks from the y axis like so:

enter image description here

Does anyone have an idea about how to do this? Any help would be greatly appreciated.

EDIT: Added more example code

import matplotlib
import matplotlib.pyplot as plt
fig = plt.figure()
ax = fig.add_subplot(111)
plt.xlabel(xlab)
plt.ylabel(ylab)
ax.spines["right"].set_color('none')
ax.xaxis.set_ticks_position('top')
ax.yaxis.set_ticks_position('left')
ax.spines["bottom"].set_color('none')
ax.xaxis.set_label_position('top')
ax.spines['left'].set_color('black')
ax.spines['top'].set_color('black')
ax.tick_params(colors='black')
xticks = ax.xaxis.get_major_ticks()
xticks[0].label1.set_visible(False)
yticks = ax.yaxis.get_major_ticks()
yticks[-1].label1.set_visible(False)
for x, y in all:
    ax.plot(x, y, 'ro')

Upvotes: 10

Views: 18617

Answers (3)

Jakob
Jakob

Reputation: 20811

Why not simply doing

ax.set_xticks(ax.get_xticks()[1:])
ax.set_yticks(ax.get_yticks()[:-1])

with ax being the axis object.

Upvotes: 9

John La Rooy
John La Rooy

Reputation: 304127

ax.xaxis.get_major_ticks()[0].draw = lambda *args:None
ax.yaxis.get_major_ticks()[-1].draw = lambda *args:None

Upvotes: 2

gg349
gg349

Reputation: 22671

You were almost there. The origin of the y axis is at the bottom. This means that the tick that you want to delete, being at the top, is the last one, that is yticks[-1]:

yticks[-1].set_visible(False)

Upvotes: 11

Related Questions