2009-12-16 68 views
13

Tôi đang sử dụng một số chức năng matplotlib đơn giản để vẽ một biểu đồ pie:matplotlib: Kiểm soát Biểu đồ hình tròn màu chữ, dòng chiều rộng

f = con số (...) pie (fracs, nổ = explode, .. .)

Tuy nhiên, tôi không thể tìm hiểu cách đặt màu phông chữ mặc định, màu đường kẻ, kích thước phông chữ - hoặc chuyển chúng sang bánh(). Làm thế nào là nó được thực hiện?

Trả lời

10

màu mặc định toàn cầu, độ rộng dòng, kích thước vv, có thể được điều chỉnh với các từ điển rcParams:

import matplotlib 
matplotlib.rcParams['text.color'] = 'r' 
matplotlib.rcParams['lines.linewidth'] = 2 

Một danh sách đầy đủ của params thể được tìm thấy here.

Bạn cũng có thể điều chỉnh độ rộng dòng sau bạn vẽ biểu đồ hình tròn của mình:

from matplotlib import pyplot as plt 
fig = plt.figure(figsize=(8,8)) 
pieWedgesCollection = plt.pie([10,20,50,20],labels=("one","two","three","four"),colors=("b","g","r","y"))[0] #returns a list of matplotlib.patches.Wedge objects 
pieWedgesCollection[0].set_lw(4) #adjust the line width of the first one. 

Thật không may, tôi không thể tìm ra cách điều chỉnh màu phông chữ hoặc kích thước của nhãn biểu đồ hình tròn rom phương pháp pie hoặc đối tượng Wedge. Nhìn vào nguồn của axes.py (dòng 4606 trên matplotlib 99.1) chúng được tạo ra bằng phương pháp Axes.text. Phương pháp này có thể lấy đối số màu và kích thước nhưng hiện tại không được sử dụng. Nếu không chỉnh sửa nguồn, tùy chọn duy nhất của bạn có thể là làm điều đó trên toàn cầu như được mô tả ở trên.

+0

Cảm ơn bạn, đó là hữu ích nhất. \t Một bổ sung: Để đặt chiều rộng dòng của nêm thực tế, bạn phải sử dụng (cho nêm đầu tiên): pieWedgesCollection [0] [0] .set_linewidth (0) – Sam

2
matplotlib.rcParams['font.size'] = 24 

làm thay đổi biểu đồ hình tròn nhãn font size

15

Hiển thị lên hơi muộn cho bữa tiệc nhưng tôi gặp phải vấn đề này và không muốn thay đổi rcParams tôi.

Bạn có thể thay đổi kích thước văn bản cho nhãn hoặc phần trăm tự động bằng cách giữ văn bản trả lại từ việc tạo biểu đồ hình tròn và sửa đổi chúng một cách thích hợp bằng cách sử dụng matplotlib.font_manager.

Bạn có thể đọc thêm về việc sử dụng matplotlib.font_manager đây: http://matplotlib.sourceforge.net/api/font_manager_api.html

xây dựng trong các kích cỡ phông chữ được liệt kê trong api; "size: Hoặc giá trị tương đối của 'xx-small', 'x-small', 'small', 'medium', 'large', 'x-large', 'xx-large' hoặc kích thước phông chữ tuyệt đối, ví dụ như 12"

from matplotlib import pyplot as plt 
from matplotlib import font_manager as fm 

fig = plt.figure(1, figsize=(6,6)) 
ax = fig.add_axes([0.1, 0.1, 0.8, 0.8]) 
plt.title('Raining Hogs and Dogs') 

labels = 'Frogs', 'Hogs', 'Dogs', 'Logs' 
fracs = [15,30,45, 10] 

patches, texts, autotexts = ax.pie(fracs, labels=labels, autopct='%1.1f%%') 

proptease = fm.FontProperties() 
proptease.set_size('xx-small') 
plt.setp(autotexts, fontproperties=proptease) 
plt.setp(texts, fontproperties=proptease) 

plt.show() 

alt text

+0

Điều đó hoạt động tuyệt vời, cảm ơn. Có cách nào tương tự để thay đổi trọng lượng đường thẳng giữa các lát không? –

Các vấn đề liên quan