Trong hình matplotlib, làm cách nào tôi có thể tạo kích thước phông chữ cho nhãn tick bằng cách sử dụng ax1.set_xticklabels()
nhỏ hơn?
Hơn nữa, làm thế nào người ta có thể xoay nó từ ngang sang dọc?
Trong hình matplotlib, làm cách nào tôi có thể tạo kích thước phông chữ cho nhãn tick bằng cách sử dụng ax1.set_xticklabels()
nhỏ hơn?
Hơn nữa, làm thế nào người ta có thể xoay nó từ ngang sang dọc?
Câu trả lời:
Xin lưu ý rằng các phiên bản mới hơn của MPL có lối tắt cho tác vụ này. Một ví dụ được hiển thị trong câu trả lời khác cho câu hỏi này: https://stackoverflow.com/a/11386056/42346
Mã dưới đây là dành cho mục đích minh họa và có thể không nhất thiết phải được tối ưu hóa.
import matplotlib.pyplot as plt
import numpy as np
def xticklabels_example():
fig = plt.figure()
x = np.arange(20)
y1 = np.cos(x)
y2 = (x**2)
y3 = (x**3)
yn = (y1,y2,y3)
COLORS = ('b','g','k')
for i,y in enumerate(yn):
ax = fig.add_subplot(len(yn),1,i+1)
ax.plot(x, y, ls='solid', color=COLORS[i])
if i != len(yn) - 1:
# all but last
ax.set_xticklabels( () )
else:
for tick in ax.xaxis.get_major_ticks():
tick.label.set_fontsize(14)
# specify integer or one of preset strings, e.g.
#tick.label.set_fontsize('x-small')
tick.label.set_rotation('vertical')
fig.suptitle('Matplotlib xticklabels Example')
plt.show()
if __name__ == '__main__':
xticklabels_example()
plt.setp
. (Ngoài ra, hãy xem ax.tick_params
) Ví dụ, bạn chỉ có thể làm plt.setp(ax.get_xticklabels(), rotation='vertical', fontsize=14)
. Ngoài ra, các đối tượng trục có một ax.is_last_row()
phương thức có thể có ích trong các trường hợp như ví dụ của bạn. Thay vì if i != len...
, bạn có thể làm if not ax.is_last_row()
. (Tại sao đó là một phương pháp, tôi không có manh mối ... Matplotlib ghét tài sản, rõ ràng!)
is_last_row()
, cảm ơn bạn! Tôi đã sử dụng plt.setp
trong quá khứ và không nhất thiết phải chắc chắn rằng nó đại diện cho một cách tùy chỉnh hơn các nhãn tick. Bạn đã xóa bỏ nghi ngờ đó, cảm ơn. Rộng hơn: câu trả lời của bạn, đặc biệt là trong matplotlib
thẻ, thường khiến tôi sợ hãi. Kịp các công việc tuyệt vời.
plt.setp
là một "matlab-ism", và một vòng lặp rõ ràng có lẽ nhiều pythonic hơn. Là một người chuyển đổi matlab, bản thân tôi, setp
cảm thấy tự nhiên, nhưng với mỗi người của họ. Một trong hai là khá dễ đọc, imo
ax.tick_params(axis='x', labelsize=8)
get_ticklabels
khôngget_major_ticks
Có một cách đơn giản hơn thực sự. Tôi vừa tìm ra:
import matplotlib.pyplot as plt
# We prepare the plot
fig, ax = plt.subplots()
# We change the fontsize of minor ticks label
ax.tick_params(axis='both', which='major', labelsize=10)
ax.tick_params(axis='both', which='minor', labelsize=8)
Điều này chỉ trả lời cho kích thước của label
một phần câu hỏi của bạn mặc dù.
axis = 'x'
hoặc axis = 'y'
để sửa đổi chỉ một trong các trục
Để chỉ định cả kích thước phông chữ và xoay cùng một lúc, hãy thử điều này:
plt.xticks(fontsize=14, rotation=90)
Ngoài ra, bạn chỉ có thể làm:
import matplotlib as mpl
label_size = 8
mpl.rcParams['xtick.labelsize'] = label_size
plt.tick_params(axis='both', which='minor', labelsize=12)
ax.xaxis.set_tick_params(labelsize=20)
Một cách khác
Tôi có hai lô cạnh nhau và muốn điều chỉnh nhãn tick riêng.
Các giải pháp trên rất gần tuy nhiên chúng không phù hợp với tôi. Tôi tìm thấy giải pháp của tôi từ trang matplotlib này .
ax.xaxis.set_tick_params(labelsize=20)
Điều này đã lừa và đã đi thẳng vào vấn đề. Đối với trường hợp sử dụng của tôi, đó là cốt truyện bên phải cần được điều chỉnh. Đối với cốt truyện bên trái kể từ khi tôi tạo nhãn tick mới, tôi có thể điều chỉnh phông chữ trong cùng quy trình như đặt ing nhãn.
I E
ax1.set_xticklabels(ax1_x, fontsize=15)
ax1.set_yticklabels(ax1_y, fontsize=15)
do đó tôi đã sử dụng cho cốt truyện phù hợp,
ax2.xaxis.set_tick_params(labelsize=24)
ax2.yaxis.set_tick_params(labelsize=24)
Một sự tinh tế nhỏ ... tôi biết ... nhưng tôi hy vọng điều này sẽ giúp được ai đó :)
Điểm thưởng nếu có ai biết cách điều chỉnh kích thước phông chữ của thứ tự nhãn cường độ.
Bạn cũng có thể thay đổi các tham số hiển thị nhãn như phông chữ bằng một dòng như thế này:
zed = [tick.label.set_fontsize(14) for tick in ax.yaxis.get_major_ticks()]
Đối với phông chữ nhỏ hơn, tôi sử dụng
ax1.set_xticklabels(xticklabels, fontsize=7)
Và nó hoạt động!
Sau đây làm việc cho tôi:
ax2.xaxis.set_tick_params(labelsize=7)
ax2.yaxis.set_tick_params(labelsize=7)
Ưu điểm của các bên trên là bạn không cần phải cung cấp array
của labels
và làm việc với bất kỳ dữ liệu trên axes
.