Vincent
Vincent

Reputation: 60451

How to remove xticks from a plot

I have a semilogx plot and I would like to remove the xticks. I tried:

plt.gca().set_xticks([])
plt.xticks([])
ax.set_xticks([])

The grid disappears (ok), but small ticks (at the place of the main ticks) remain. How to remove them?

Upvotes: 516

Views: 815460

Answers (13)

Axel Gib
Axel Gib

Reputation: 99

It is possible to simply change the visibility:

ax.xaxis.set_visible(False)

Upvotes: 5

Yuchao Jiang
Yuchao Jiang

Reputation: 3838

If you want to remove tick labels but keep the ticks and grids, this code snippet will work.

plt.gca().axes.xaxis.set_ticklabels([])
plt.gca().axes.yaxis.set_ticklabels([])
plt.grid(alpha = 0.2)

enter image description here

Upvotes: 2

zam_22
zam_22

Reputation: 21

A simple solution to this problem is to set the color of the xticks to White or to whatever the background color is. This will hide the text of the xticks but not the xticks itself.

import matplotlib.pyplot as plt
plt.plot()
plt.xticks(color='white')
plt.show()

Result

Upvotes: 0

dmcdougall
dmcdougall

Reputation: 2526

There is a better, and simpler, solution than the one given by John Vinyard. Use NullLocator:

import matplotlib.pyplot as plt

plt.plot(range(10))
plt.gca().xaxis.set_major_locator(plt.NullLocator())
plt.show()
plt.savefig('plot')

Upvotes: 58

John Vinyard
John Vinyard

Reputation: 13505

The plt.tick_params method is very useful for stuff like this. This code turns off major and minor ticks and removes the labels from the x-axis.

Note that there is also ax.tick_params for matplotlib.axes.Axes objects.

from matplotlib import pyplot as plt
plt.plot(range(10))
plt.tick_params(
    axis='x',          # changes apply to the x-axis
    which='both',      # both major and minor ticks are affected
    bottom=False,      # ticks along the bottom edge are off
    top=False,         # ticks along the top edge are off
    labelbottom=False) # labels along the bottom edge are off
plt.show()
plt.savefig('plot')
plt.clf()

enter image description here

Upvotes: 745

user14093575
user14093575

Reputation:

Modify the following rc parameters by adding the commands to the script:

plt.rcParams['xtick.bottom'] = False
plt.rcParams['xtick.labelbottom'] = False

A sample matplotlibrc file is depicted in this section of the matplotlib documentation, which lists many other parameters like changing figure size, color of figure, animation settings, etc.

Upvotes: 4

hahnec
hahnec

Reputation: 652

Those of you looking for a short command to switch off all ticks and labels should be fine with

plt.tick_params(top=False, bottom=False, left=False, right=False,
                labelleft=False, labelbottom=False)

which allows type bool for respective parameters since version matplotlib>=2.1.1

For custom tick settings, the docs are helpful:

https://matplotlib.org/api/_as_gen/matplotlib.axes.Axes.tick_params.html

Upvotes: 14

hashmuke
hashmuke

Reputation: 3335

Alternatively, you can pass an empty tick position and label as

# for matplotlib.pyplot
# ---------------------
plt.xticks([], [])
# for axis object
# ---------------
# from Anakhand May 5 at 13:08
# for major ticks
ax.set_xticks([])
# for minor ticks
ax.set_xticks([], minor=True)

Upvotes: 193

Nishant Wattamwar
Nishant Wattamwar

Reputation: 99

# remove all the ticks (both axes), and tick labels on the Y axis
plt.tick_params(top='off', bottom='off', left='off', right='off', labelleft='off', labelbottom='on')

Upvotes: 4

Amitrajit Bose
Amitrajit Bose

Reputation: 668

This snippet might help in removing the xticks only.

from matplotlib import pyplot as plt    
plt.xticks([])

This snippet might help in removing the xticks and yticks both.

from matplotlib import pyplot as plt    
plt.xticks([]),plt.yticks([])

Upvotes: 28

Tom Phillips
Tom Phillips

Reputation: 1920

Here is an alternative solution that I found on the matplotlib mailing list:

import matplotlib.pylab as plt

x = range(1000)
ax = plt.axes()
ax.semilogx(x, x)
ax.xaxis.set_ticks_position('none') 

graph

Upvotes: 95

auraham
auraham

Reputation: 1739

Try this to remove the labels (but not the ticks):

import matplotlib.pyplot as plt

plt.setp( ax.get_xticklabels(), visible=False)

example

Upvotes: 36

Martin Spacek
Martin Spacek

Reputation: 3127

Not exactly what the OP was asking for, but a simple way to disable all axes lines, ticks and labels is to simply call:

plt.axis('off')

Upvotes: 272

Related Questions