Кліщі Python Matplotlib Y-Axis справа на ділянці


112

У мене простий графік ліній і потрібно перемістити тики по осі y з (за замовчуванням) лівої частини ділянки в праву сторону. Будь-які думки, як це зробити?

Відповіді:


192

Використовуйте 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
endolith

А що, якщо я хочу, щоб кліщі та мітки були і зліва, і справа?
АстроФлойд

1
Я не розбирався чому, але це зламається, якщо у вас є субплоти sharey=True.
Стівен К. Хоуелл

Яка команда зробити так, щоб кліщі з’являлися зліва та справа? Дякую!
tommy.carstensen

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

57

Відповідь joaquin працює, але має побічний ефект від видалення кліщів з лівого боку осей. Щоб виправити це, продовжуйте 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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.