Вилучити xticks в сюжеті matplotlib?


290

У мене є напівлогічний сюжет, і я хотів би видалити xticks. Я намагався:

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

Сітка зникає (нормально), але невеликі кліщі (на місці основних кліщів) залишаються. Як їх видалити?


Деякі рішення не спрацювали для мене. Але лише невелика зміна прикладів тут: ax.set_xticks([], [])і це вирішено ...
TravelTrader

Відповіді:


464

tick_paramsМетод дуже корисний для речей , як це. Цей код вимикає основні та незначні галочки та видаляє мітки з осі x.

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()

введіть тут опис зображення


87
Я вдячний, як це не лише відповідає на питання, але надає шаблон для вимкнення / вмикання кількох речей. Це стосується результатів як для осей x, так і y:plt.tick_params(axis='both', which='both', bottom='off', top='off', labelbottom='off', right='off', left='off', labelleft='off')
Стівен К. Хоуелл

2
Що робити, якщо це 3D-сюжет?
tommy.carstensen

38
Це чудова відповідь. Для тих, хто шукає oo версії, axesє той же tick_paramsметод.
Божевільний фізик

22
У нових версіях програми matplotlibви повинні замінити 'on'на Trueі 'off'на False.
BallpointBen

1
Відповідь слід оновити для інтерфейсу OOP та синтаксису нової версії.
ifly6

142

Не зовсім те, про що просила ОП, але простий спосіб відключити всі лінії осей, галочки та мітки - просто зателефонувати:

plt.axis('off')

26
Що мені потрібна була подяка. Об'єктно-орієнтована версія буде ax.axis('off')на існуючому екземплярі осей.
ПлазмаBinturong

5
як тільки для xaxis?
qrtLs

82

Можна також пропустити порожню позицію галочки та позначити як

# 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)

8
Якщо у вас є екземпляр осі, скажімо ax, ви можете використовувати:ax.set_xticks([], [])
Guilherme Salomé

@ GuilhermeSalomé тепер викликає попередження: "Передача другорядного параметра set_xticks () позиційно застаріла, оскільки Matplotlib 3.2; цей параметр стане лише двома незначними випусками пізніше". Яке правильне рішення зараз?
Rylan Schaeffer

2
@RylanSchaeffer ax.set_xticks([])для основних кліщів, ax.set_xticks([], minor=True)для незначних кліщів. Еквіваленти з pyplotє plt.xticks([])і plt.xticks([], minor=True).
Анаханд


42

Є краще і простіше рішення, ніж рішення, яке надав Джон Віндар. Використання NullLocator:

import matplotlib.pyplot as plt

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

Сподіваюся, що це допомагає.


22
"Краще" є дискусійним, але +1 для альтернативи.
Mechan_meat

Варіант цього рішення також працював для мене, коли метою було лише вилучення xticks із вбудованого "збільшення", зберігаючи їх у головному сюжеті. Використання axins.xaxis.set_major_locator(plt.NullLocator()), де axinsповертається об'єкт axins = zoomed_inset_axes()(функція, імпортована з mpl_toolkits.axes_grid1.inset_locator).
Денніс Сомерс

28

Спробуйте це видалити мітки (але не кліщі):

import matplotlib.pyplot as plt

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

приклад


3
setpперебуває в режимі пілаб, не можна використовувати проти окремих осей
тире

1
Як щодо об’єктно-орієнтованого інтерфейсу?
ifly6

Це була єдина відповідь, яка також працювала для 3D-сюжетів для мене. Дякую за це!
Brent

13

Цей фрагмент може допомогти видалити лише xticks.

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

Цей фрагмент може допомогти видалити xticks і yticks як.

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

3
# 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')

2
Об'єктно-орієнтована версія цьогоax.tick_params()
Marcelo Villa-Piñeros

1
Крім того, використання offі onзастаріле. MatplotlibDeprecationWarning: Passing one of 'on', 'true', 'off', 'false' as a boolean is deprecated; use an actual boolean (True/False) instead.
Марсело Вілла-Піньєрос

0

Тим із вас, хто шукає коротку команду для вимкнення всіх галочок і міток, слід добре відповідати

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

що дозволяє тип bool відповідні параметри, оскільки версія matplotlib> = 2.1.1

Для налаштування спеціальних галочок корисні документи:

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.