Python Matplotlib Eixo Y assinala no lado direito do gráfico

112

Eu tenho um gráfico de linha simples e preciso mover as marcações do eixo y do lado esquerdo (padrão) do gráfico para o lado direito. Alguma ideia de como fazer isso?

Jason Strimpel
fonte

Respostas:

192

Usar ax.yaxis.tick_right()

por exemplo:

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

insira a descrição da imagem aqui

joaquin
fonte
Ótima resposta, você recebe um +1, eu daria outro +1 pela foto, mas estou limitado a apenas 1.
lukecampbell
interessante que isso faz com que os nomes dos carrapatos voltem, embora devam ser suprimidos por sharey = True
endolith
E se eu quiser os carrapatos e rótulos à esquerda e à direita?
AstroFloyd de
1
Eu não descobri o porquê, mas isso quebra se você tiver subtramas com sharey=True.
Steven C. Howell
Qual é o comando para fazer os carrapatos aparecerem à esquerda e à direita? Obrigado!
tommy.carstensen
99

Para usar os rótulos certos ax.yaxis.set_label_position("right"), ou seja:

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
fonte
57

A resposta de joaquin funciona, mas tem o efeito colateral de remover os carrapatos do lado esquerdo dos eixos. Para corrigir isso, tick_right()ligue para set_ticks_position('both'). Um exemplo revisado:

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

O resultado é um gráfico com marcações em ambos os lados, mas marcadores de marcação à direita.

insira a descrição da imagem aqui

Tom Baldwin
fonte
24

Caso alguém pergunte (como eu), isso também é possível quando se usa subplot2grid. Por exemplo:

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

Vai mostrar isso:

insira a descrição da imagem aqui

Titianne
fonte
4
Isso também funciona com ax.tick_params(axis='y', which='both', labelleft='off', labelright='on'). Mas isso não move oylabel
Eric
1
Bem, você sempre pode usar plt.gca()para obter o objeto de eixos atual. Portanto, você usaria:plt.gca().yaxis.set_label_position("right")
sannaj