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?

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


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

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


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


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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.