Python Matplotlib Y-Axis berdetak di Sisi Kanan Plot

112

Saya memiliki plot garis sederhana dan perlu memindahkan tanda sumbu y dari sisi kiri (default) plot ke sisi kanan. Ada pemikiran tentang bagaimana melakukan ini?

Jason Strimpel
sumber

Jawaban:

192

Menggunakan ax.yaxis.tick_right()

sebagai contoh:

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

masukkan deskripsi gambar di sini

joaquin
sumber
Jawaban bagus, Anda dapat +1, saya akan memberi Anda +1 lagi untuk gambarnya tetapi saya dibatasi hanya 1.
lukecampbell
menarik bahwa ini menyebabkan nama tick muncul kembali meskipun harus ditekan oleh sharey = True
endolith
Dan bagaimana jika saya ingin tanda centang dan label keduanya kiri dan kanan?
AstroFloyd
1
Saya tidak mengerti mengapa, tapi ini rusak jika Anda memiliki subplot dengan sharey=True.
Steven C. Howell
Apa perintah untuk membuat tanda centang muncul di kiri dan kanan? Terima kasih!
tommy.carstensen
99

Untuk penggunaan label yang tepat ax.yaxis.set_label_position("right"), yaitu:

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

Jawaban joaquin berhasil, tetapi memiliki efek samping menghilangkan kutu dari sisi kiri sumbu. Untuk mengatasinya, tindak lanjuti tick_right()dengan panggilan ke set_ticks_position('both'). Contoh yang direvisi:

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

Hasilnya adalah plot dengan tanda centang di kedua sisi, tetapi label centang di sebelah kanan.

masukkan deskripsi gambar di sini

Tom Baldwin
sumber
24

Hanya jika seseorang bertanya (seperti yang saya lakukan), ini juga mungkin ketika seseorang menggunakan subplot2grid. Sebagai contoh:

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

Ini akan menunjukkan ini:

masukkan deskripsi gambar di sini

Titianne
sumber
4
Ini bekerja dengan ax.tick_params(axis='y', which='both', labelleft='off', labelright='on')baik. Tapi itu tidak menggerakkanylabel
Eric
1
Anda selalu bisa menggunakan plt.gca()untuk mendapatkan objek sumbu saat ini. Oleh karena itu Anda akan menggunakan:plt.gca().yaxis.set_label_position("right")
sannaj