Python Matplotlib - ось Y - галочки на правой стороне графика

112

У меня есть простой линейный график, и мне нужно переместить галочки оси Y с левой (по умолчанию) стороны графика на правую. Есть мысли, как это сделать?

Джейсон Стримпель
источник

Ответы:

193

Использовать ax.yaxis.tick_right()

например:

from matplotlib import pyplot as plt

f = plt.figure()
ax = f.add_subplot(111)
ax.yaxis.tick_right()
plt.plot([2,3,4,5])
plt.show()

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

Хоакин
источник
Отличный ответ, вы получите +1, я бы дал вам еще +1 за картинку, но я ограничен только 1.
lukecampbell
Интересно , что это приводит к тому , имена клеща вернуться , даже если они должны быть подавлены sharey = True
эндолиты
А что, если мне нужны метки и метки слева и справа?
AstroFloyd
1
Я не разбирался, почему, но это ломается, если у вас есть подсюжеты с sharey=True.
Стивен С. Хауэлл
Какая команда заставляет галочки появляться слева и справа? Спасибо!
tommy.carstensen 02
99

Для правильного использования этикеток ax.yaxis.set_label_position("right"), то есть:

f = plt.figure()
ax = f.add_subplot(111)
ax.yaxis.tick_right()
ax.yaxis.set_label_position("right")
plt.plot([2,3,4,5])
ax.set_xlabel("$x$ /mm")
ax.set_ylabel("$y$ /mm")
plt.show()
Dietrich
источник
57

Ответ Хоакина работает, но имеет побочный эффект удаления галочки с левой стороны осей. Чтобы исправить это, tick_right()позвоните в set_ticks_position('both'). Пересмотренный пример:

from matplotlib import pyplot as plt

f = plt.figure()
ax = f.add_subplot(111)
ax.yaxis.tick_right()
ax.yaxis.set_ticks_position('both')
plt.plot([2,3,4,5])
plt.show()

Результатом является график с отметками по обеим сторонам, но с отметками справа.

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

Том Болдуин
источник
24

На всякий случай кто-то спросит (как я), это также возможно при использовании subplot2grid. Например:

import matplotlib.pyplot as plt
plt.subplot2grid((3,2), (0,1), rowspan=3)
plt.plot([2,3,4,5])
plt.tick_params(axis='y', which='both', labelleft='off', labelright='on')
plt.show()

Он покажет это:

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

Тицианна
источник
4
Это также работает с ax.tick_params(axis='y', which='both', labelleft='off', labelright='on'). Но это не сдвигаетylabel
Эрик
1
Что ж, вы всегда можете использовать plt.gca()для получения текущего объекта оси. Поэтому вы должны использовать:plt.gca().yaxis.set_label_position("right")
sannaj