Python Matplotlib แกน Y ทำเครื่องหมายที่ด้านขวาของ Plot


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
endolith

แล้วถ้าฉันต้องการเห็บและป้ายทั้งซ้ายและขวาล่ะ?
AstroFloyd

1
ผมไม่ได้เรียงลำดับออกว่าทำไม sharey=Trueแต่พักนี้ถ้าคุณมีย่อยด้วย
Steven C. Howell

คำสั่งที่ทำให้เห็บปรากฏทางซ้ายและขวาคืออะไร? ขอบคุณ!
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
Eric

1
คุณสามารถใช้plt.gca()เพื่อรับวัตถุแกนปัจจุบันได้ตลอดเวลา ดังนั้นคุณจะใช้:plt.gca().yaxis.set_label_position("right")
sannaj
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.