Cách thay đổi kích thước chú giải bằng matplotlib.pyplot


324

Câu hỏi đơn giản ở đây: Tôi đang cố gắng để kích thước của huyền thoại của mình sử dụng matplotlib.pyplotnhỏ hơn (nghĩa là văn bản nhỏ hơn). Mã tôi đang sử dụng giống như thế này:

plot.figure()
plot.scatter(k, sum_cf, color='black', label='Sum of Cause Fractions')
plot.scatter(k, data[:, 0],  color='b', label='Dis 1: cf = .6, var = .2')
plot.scatter(k, data[:, 1],  color='r',  label='Dis 2: cf = .2, var = .1')
plot.scatter(k, data[:, 2],  color='g', label='Dis 3: cf = .1, var = .01')
plot.legend(loc=2)

Câu trả lời:


543

Bạn có thể đặt kích thước phông chữ riêng cho chú giải bằng cách điều chỉnh proptừ khóa.

plot.legend(loc=2, prop={'size': 6})

Điều này có một từ điển các từ khóa tương ứng với matplotlib.font_manager.FontPropertiescác thuộc tính. Xem tài liệu cho huyền thoại :

Đối số từ khóa:

prop: [ None | FontProperties | dict ]
    A matplotlib.font_manager.FontProperties instance. If prop is a 
    dictionary, a new instance will be created with prop. If None, use
    rc settings.

Cũng có thể, kể từ phiên bản 1.2.1 , sử dụng từ khóa fontsize.


1
Bạn có thể cho tôi biết nơi tôi có thể tìm thấy chi tiết về plot.rcParams.update?
haccks

64

Điều này nên làm

import pylab as plot
params = {'legend.fontsize': 20,
          'legend.handlelength': 2}
plot.rcParams.update(params)

Sau đó thực hiện cốt truyện sau đó.

Có rất nhiều RCParams khác, chúng cũng có thể được đặt trong tệp matplotlibrc.

Cũng có thể bạn có thể thay đổi nó thông qua một matplotlib.font_manager.FontPropertiesví dụ nhưng điều này tôi không biết làm thế nào. -> xem câu trả lời của Yann.


2
Hoặcmatplotlib.rc('legend', fontsize=0.5, linewidth=2)
Eric

2
nên legend.handlelengththay vìlegend.linewidth
Emmet B

Thành viên get_default_size () của FontManager trả về kích thước mặc định. Đối với tôi đó là 12
guhur

1
Việc sử dụng "PyLab" không được khuyến khích nữa: matplotlib.org/faq/iêu
Hagbard

51

sử dụng import matplotlib.pyplot as plt

Phương pháp 1: chỉ định phông chữ khi gọi chú thích (lặp đi lặp lại)

plt.legend(fontsize=20) # using a size in points
plt.legend(fontsize="x-large") # using a named size

Với phương pháp này, bạn có thể đặt phông chữ cho mỗi chú giải khi tạo (cho phép bạn có nhiều huyền thoại với các phông chữ khác nhau). Tuy nhiên, bạn sẽ phải nhập mọi thứ thủ công mỗi khi bạn tạo một huyền thoại.

(Lưu ý: @ Mathias711 liệt kê các phông chữ có tên có sẵn trong câu trả lời của anh ấy)

Phương pháp 2: chỉ định phông chữ trong RCParams (thuận tiện)

plt.rc('legend',fontsize=20) # using a size in points
plt.rc('legend',fontsize='medium') # using a named size

Với phương pháp này, bạn đặt phông chữ huyền thoại mặc định và tất cả các huyền thoại sẽ tự động sử dụng trừ khi bạn chỉ định khác bằng cách sử dụng phương pháp 1. Điều này có nghĩa là bạn có thể đặt phông chữ chú giải của mình ở đầu mã và không lo lắng về việc đặt nó cho từng chú giải riêng lẻ .

Nếu bạn sử dụng một kích thước ví dụ như tên 'medium', sau đó các văn bản huyền thoại sẽ mở rộng với thế giới font.sizetrong rcParams. Để thay đổi font.sizesử dụngplt.rc(font.size='medium')


1
Chỉ để thông báo cho người mới bắt đầu Python (như tôi): Phương thức 1 chỉ hoạt động sau khi tạo một âm mưu (sau một dòng cốt truyện ()) và Phương pháp 2 chỉ hoạt động trước khi tạo một âm mưu. Cảm ơn bạn. Tôi đồng ý với @Scott Gigante, đây sẽ là câu trả lời!
Mateus da Silva Teixeira

42

Ngoài ra còn có một vài phông chữ được đặt tên , ngoài kích thước theo điểm:

xx-small
x-small
small
medium
large
x-large
xx-large

Sử dụng:

pyplot.legend(loc=2, fontsize = 'x-small')

19

Có nhiều cài đặt để điều chỉnh kích thước chú giải. Hai cái tôi thấy hữu ích nhất là:

  • nhãn không gian: trong đó đặt khoảng cách giữa các mục nhãn theo bội số của kích thước phông chữ. Chẳng hạn, với phông chữ 10 điểm, legend(..., labelspacing=0.2)sẽ giảm khoảng cách giữa các mục xuống còn 2 điểm. Mặc định trong cài đặt của tôi là khoảng 0,5.
  • prop: cho phép kiểm soát hoàn toàn kích thước phông chữ, v.v. Bạn có thể đặt phông chữ 8 điểm bằng cách sử dụng legend(..., prop={'size':8}). Mặc định trong cài đặt của tôi là khoảng 14 điểm.

Bên cạnh đó, tài liệu huyền thoại danh sách một số thông số đệm và khoảng cách khác bao gồm: borderpad, handlelength, handletextpad, borderaxespad, và columnspacing. Tất cả đều theo cùng một hình thức như không gian nhãn và diện tích cũng trong bội số của phông chữ.

Các giá trị này cũng có thể được đặt làm mặc định cho tất cả các số liệu bằng cách sử dụng tệp matplotlibrc .


5

Khi tôi cài đặt, FontProperies chỉ thay đổi kích thước văn bản, nhưng nó vẫn quá lớn và cách nhau. Tôi tìm thấy một tham số trong pyplot.rcParams: legend.labelspacing, mà tôi đoán được đặt thành một phần kích thước phông chữ. Tôi đã thay đổi nó với

pyplot.rcParams.update({'legend.labelspacing':0.25})

Tôi không chắc chắn làm thế nào để chỉ định nó cho hàm pyplot.legend - truyền

prop={'labelspacing':0.25}

hoặc là

prop={'legend.labelspacing':0.25}

trở lại với một lỗi.


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.