Khi thiết lập các xlabel, tham số x
gán vị trí trong đơn vị trục, do đó 0 là ori gin và 1 là cạnh phải của ô. y
bị bỏ qua vì được dự kiến là giá trị mặc định, ngay bên dưới dấu tick.
Để ghi đè hành vi này, bạn có thể đặt vị trí theo đơn vị trục bằng cách sử dụng Axis
set_label_coords
method. Bạn có thể sử dụng các đơn vị khác bằng cách cung cấp một biến đổi.
Dưới đây là một ví dụ về điều này:
import matplotlib.pyplot as plt
import numpy as np
ax = plt.gca()
ax.set_xticks(np.arange(0,6,1))
label = ax.set_xlabel('Xlabel', fontsize = 9)
ax.xaxis.set_label_coords(1.05, -0.025)
plt.savefig('labelAtEnd.png')
plt.show()
Hệ quả là:
Giá trị x (1,05) đã được lựa chọn để định vị nhãn bên ngoài khung Axes. Giá trị y (-0.025) đã được chọn là phỏng đoán tốt nhất cho vị trí bạn muốn. Sử dụng phép biến đổi, có thể tự động định vị văn bản phù hợp với nhãn Tick
.
EDIT:
Dưới đây là một ví dụ mở rộng sử dụng một biến đổi. Nó không phải là hữu ích hơn để sử dụng biến đổi của ticklabel cuối cùng, bởi vì nó không tính đến kích thước của văn bản và cách nó được căn chỉnh. Vì vậy, để có được hiệu ứng mong muốn, tôi phải 1) sử dụng cùng kích thước phông chữ cho nhãn x của tôi, 2) đặt căn chỉnh dọc (va) đến 'trên cùng' và 3) đặt căn chỉnh theo chiều ngang sang 'trái'. Biến đổi cho mỗi đánh dấu được thiết lập cho các đơn vị dữ liệu cho x (vì nó là một xaxis) và các đơn vị trục cho y (0 đến 1), nhưng thay thế bởi một padding cố định (tính bằng pixel) từ trục x.
import matplotlib.pyplot as plt
import numpy as np
ax = plt.gca()
ax.set_xticks(np.arange(0,6,1))
ax.set_yticks(np.arange(0,6,1))
label = ax.set_xlabel('xlabel', ha='left', va = 'top',)#fontsize = 9)
# need to draw the figure first to position the tick labels
fig = plt.gcf()
fig.draw(fig.canvas.get_renderer())
# get a tick and will position things next to the last one
ticklab = ax.xaxis.get_ticklabels()[0]
trans = ticklab.get_transform()
ax.xaxis.set_label_coords(5.1, 0, transform=trans)
plt.savefig('labelAtEnd2.png')
plt.show()
Điều này dẫn đến:
Bạn có thể đưa ra ví dụ về việc sử dụng biến đổi không? –
@Zhenya Tôi đã thêm một ví dụ, nhưng hóa ra không phải là tầm thường. – Yann
cảm ơn bạn rất nhiều! – billyduc