Trục Y Python Matplotlib đánh dấu vào phía bên phải của lô


112

Tôi có một biểu đồ đường đơn giản và cần di chuyển các dấu tích trục y từ phía bên trái (mặc định) của biểu đồ sang phía bên phải. Bất kỳ suy nghĩ về cách làm điều này?

Câu trả lời:


192

Sử dụng ax.yaxis.tick_right()

ví dụ:

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

nhập mô tả hình ảnh ở đây


Great câu trả lời, bạn nhận được một +1, tôi muốn cung cấp cho bạn một 1 cho hình ảnh nhưng tôi chỉ vẻn vẹn có 1.
lukecampbell

thú vị mà điều này gây ra những cái tên đánh dấu trở lại mặc dù họ nên bị đè nén bởi sharey = True
endolith

Và điều gì sẽ xảy ra nếu tôi muốn đánh dấu và nhãn cả trái và phải?
AstroFloyd

1
Tôi đã không giải thích tại sao, nhưng điều này sẽ phá vỡ nếu bạn có các tình huống phụ với sharey=True.
Steven C. Howell

Lệnh để làm cho bọ ve xuất hiện ở bên trái bên phải là gì? Cảm ơn!
tommy.carstensen

99

Để sử dụng đúng nhãn ax.yaxis.set_label_position("right"), tức là:

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

Câu trả lời của joaquin hoạt động, nhưng có tác dụng phụ là loại bỏ bọ ve từ phía bên trái của trục. Để khắc phục điều này, hãy liên hệ tick_right()với cuộc gọi tới set_ticks_position('both'). Một ví dụ đã sửa đổi:

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

Kết quả là một âm mưu có bọ ve ở cả hai bên, nhưng đánh dấu nhãn ở bên phải.

nhập mô tả hình ảnh ở đây


24

Chỉ trong trường hợp ai đó hỏi (như tôi đã làm), điều này cũng có thể xảy ra khi một người sử dụng subplot2grid. Ví dụ:

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

Nó sẽ hiển thị điều này:

nhập mô tả hình ảnh ở đây


4
Điều này cũng hoạt động với ax.tick_params(axis='y', which='both', labelleft='off', labelright='on'). Nhưng nó không di chuyểnylabel
Eric

1
Bạn luôn có thể sử dụng plt.gca()để lấy đối tượng trục hiện tại. Do đó bạn sẽ sử dụng:plt.gca().yaxis.set_label_position("right")
sannaj
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.