Скрыть значения оси, но сохранить метки отметки оси в 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()
tmdavison
источник
11
Эндрю Шрайбер
86

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

plt.xticks([])
plt.yticks([])
Ноэль Эванс
источник
44

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

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

Бум.

MRT
источник
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=[]).
Руслан С.
0

plt.gca().axes.yaxis.set_ticklabels([])

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

Ник Скоццаро
источник