2009-12-16 20 views
13

我使用一些簡單的matplotlib函數繪製餅圖:matplotlib:控制餅圖字體顏色,線寬

F =圖(...) 餡餅(壓裂,爆炸=爆炸,.. )

但是,我找不到如何設置默認字體顏色,線條顏色,字體大小 - 或將它們傳遞給pie()。它是如何完成的?

回答

10

全局默認的顏色,線條寬度,尺寸等,可以用rcParams字典調整:

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

則params的完整列表,可以發現here.

你也可以調整線寬後您繪製餅圖:

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. 

不幸的是,我不能想出一個辦法來調整餡餅的字體顏色或大小圖表標籤˚F從餅圖方法或楔形對象開始。查看axes.py的源代碼(matplotlib 99.1上的第4606行),它們是使用Axes.text方法創建的。此方法可以採用顏色和大小參數,但目前尚未使用。如果沒有編輯源代碼,您唯一的選擇可能是按照上述方法在全局範圍內完成。

+0

謝謝你,這是最有幫助的。 \t 一個補充:要設置實際楔形的行寬度,您必須使用(對於第一個楔形): pieWedgesCollection [0] [0] .set_linewidth(0) – Sam

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

確實改變了餅圖標籤字體大小

15

末晚會顯示了一點,但我遇到了這個問題,並沒有想改變我的rcParams。

您可以通過保留從創建餅圖返回的文本並使用matplotlib.font_manager適當修改它們來調整標籤或自動百分比的文本大小。

您可以在此處詳細瞭解使用matplotlib.font_manager: http://matplotlib.sourceforge.net/api/font_manager_api.html

內置字體大小在API中列出;尺寸:「xx-small」,「x-small」,「small」,「medium」,「large」,「x-large」,「xx-large」或絕對字體大小的相對值,例如,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

這很好,謝謝。是否有類似的方式來改變切片之間的線重量? –