Скрыть значения оси, но сохранить метки отметки оси в matplotlib


101

У меня есть это изображение:

plt.plot(sim_1['t'],sim_1['V'],'k')
plt.ylabel('V')
plt.xlabel('t')
plt.show()

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

Я хочу скрыть цифры; если я использую:

plt.axis('off')

... Получаю вот такое изображение:

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

Он также скрывает метки Vи t. Как я могу сохранить метки, скрывая значения?

Ответы:


141

Если вы используете объектно-ориентированный подход matplotlib , это простая задача с использованием ax.set_xticklabels()и ax.set_yticklabels():

import matplotlib.pyplot as plt

# Create Figure and Axes instances
fig,ax = plt.subplots(1)

# Make your plot, set your axes labels
ax.plot(sim_1['t'],sim_1['V'],'k')
ax.set_ylabel('V')
ax.set_xlabel('t')

# Turn off tick labels
ax.set_yticklabels([])
ax.set_xticklabels([])

plt.show()


86

Без a subplotsвы можете повсеместно убрать галочки следующим образом:

plt.xticks([])
plt.yticks([])

44

Это прекрасно работает. Просто вставьте это перед plt.show():

plt.gca().axes.get_yaxis().set_visible(False)

Бум.


2
Спасибо, отлично работает. В остальных случаях тики сохраняются (потому что направление тика по умолчанию
отключено

В отличие от ответов типа ax.set_xticklabels ([]), этот отлично работает в следующем случае: один использует подзаголовки с опцией sharex и хочет удалить отметки только для одного из подзаголовков.
Михаил Лисаков

Большой! И plt.gca (). Axes.get_xaxis (). Set_visible (False), чтобы также избавиться от меток и меток оси x.
fbparis

1
или если у вас уже есть объект с топором,ax.xaxis.set_visible(False)
раскрутка

1
@filip Я рад, что это помогло :)
MRT

3

Не уверен, что это лучший способ, но вы, безусловно, можете заменить метки так:

import matplotlib.pyplot as plt
x = range(10)
y = range(10)
plt.plot(x,y)
plt.xticks(x," ")
plt.show()

В Python 3.4 это генерирует простой линейный график без меток на оси x. Вот простой пример: http://matplotlib.org/examples/ticks_and_spines/ticklabels_demo_rotation.html

В этом связанном вопросе также есть несколько лучших предложений: Скрытие текста оси в графиках matplotlib

Я новичок в питоне. Ваш пробег может отличаться в более ранних версиях. Может другие могут помочь?


2

для полного удаления отметок используйте:

ax.set_yticks([])
ax.set_xticks([])

в противном случае так ax.set_yticklabels([])и ax.set_xticklabels([])останутся галочки.


Когда я пытаюсь ax.set_yticks([], []), я получаю следующее предупреждение: «MatplotlibDeprecationWarning: позиционная передача второстепенного параметра set_xticks () устарела, начиная с Matplotlib 3.2; позже параметр станет только для ключевых слов двумя второстепенными выпусками». Какая альтернатива?
Райлан Шеффер,

@RylanSchaeffer, в вашем примере ax.set_yticks([], [])вы передаете 2 пустых списка, что вызывает ошибку. Зачем это нужно? См. Руководство по эксплуатации. Если первый аргумент не должен быть принят позиционно, передать его с ключевым словом: ax.set_yticks(ticks=[]).
Руслан С.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.