Trong hình matplotlib, làm thế nào tôi có thể làm cho cỡ chữ cho các nhãn đánh dấu bằng cách sử dụng ax1.set_xticklabels()
nhỏ hơn?Matplotlib giúp đánh dấu các nhãn cỡ phông chữ nhỏ hơn
Hơn nữa, làm cách nào để xoay từ ngang sang dọc?
Trong hình matplotlib, làm thế nào tôi có thể làm cho cỡ chữ cho các nhãn đánh dấu bằng cách sử dụng ax1.set_xticklabels()
nhỏ hơn?Matplotlib giúp đánh dấu các nhãn cỡ phông chữ nhỏ hơn
Hơn nữa, làm cách nào để xoay từ ngang sang dọc?
Xin lưu ý rằng các phiên bản MPL mới hơn 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ã bên dưới là nhằm 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()
Cũng giống như một sang một bên: Thay vì lặp qua các đối tượng nhãn tick, bạn có thể sử dụng 'plt.setp'. (Ngoài ra, có một cái nhìn tại '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ó phương thức 'ax.is_last_row()' 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 nó là một phương pháp, tôi không có đầu mối ... Matplotlib ghét tài sản, rõ ràng!) –
@Joe: đây là lần đầu tiên tôi nghe về '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 nó đại diện cho một cách tùy chỉnh kinh điển hơn các nhãn tick. Bạn đã loại bỏ sự nghi ngờ đó, cảm ơn. Rộng hơn: các câu trả lời của bạn, đặc biệt là trong thẻ 'matplotlib', thường khiến tôi kinh ngạc. Kịp các công việc tuyệt vời. – bernie
Cảm ơn !! Tôi đánh giá cao các từ ngữ, đặc biệt là từ bạn! Canonical rất thân thiện, trong trường hợp này. 'plt.setp' là một" matlab-ism ", và một vòng lặp rõ ràng có lẽ là nhiều hơn nữa pythonic. Là một MATLAB chuyển đổi, bản thân mình, 'setp' cảm thấy tự nhiên, nhưng cho mỗi của riêng mình. Hoặc là một trong số đó là khá dễ đọc, i.m.o. –
Có một cách đơn giản hơn trên thực tế. Tôi vừa tìm thấy:
import matplotlib.pyplot as plt
# We prepare the plot
fig = plt.figure(1)
# We define a fake subplot that is in fact only the plot.
plot = fig.add_subplot(111)
# We change the fontsize of minor ticks label
plot.tick_params(axis='both', which='major', labelsize=10)
plot.tick_params(axis='both', which='minor', labelsize=8)
Điều này chỉ trả lời kích thước label
một phần câu hỏi của bạn.
Bạn cũng có thể thay đổi các thông số hiển thị nhãn như fontsize với một dòng như thế này:
zed = [tick.label.set_fontsize(14) for tick in ax.yaxis.get_major_ticks()]
Ngoài ra, bạn chỉ có thể làm:
import matplotlib as mpl
label_size = 8
mpl.rcParams['xtick.labelsize'] = label_size
Trong các phiên bản hiện tại của Matplotlib, bạn có thể làm axis.set_xticklabels(labels, fontsize='small')
.
Đố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!
Để xác định cả hai kích thước phông chữ và luân chuyển cùng một lúc, hãy thử này:
plt.xticks(fontsize=14, rotation=90)
Đây là câu trả lời tốt nhất và đơn giản nhất. – user1271772
plt.tick_params (trục = 'cả hai', mà = 'nhỏ', labelsize = 12)
Đây là câu trả lời duy nhất hoạt động nếu bạn muốn thay đổi phông chữ mà không cần đặt nhãn mới. –
Cảm ơn khi đặt câu hỏi này, tôi đang cố giải quyết vấn đề này ngay bây giờ. Tôi không có ý kiến mạnh mẽ ở đây, nhưng có vẻ như cử tri nghĩ câu trả lời tốt nhất không phải là câu trả lời được chấp nhận. Bạn nghĩ sao? –
tôi đã đọc đúng cách có ít nhất 5 cách khác nhau để thay đổi phông chữ trong matplotlib? : D – famargar