2013-12-12 87 views
7

我正在嘗試使matplotlib餅圖上的行更輕。因爲我有這麼多片,線條太粗,如下所示:更改matplotlib餅圖中的行屬性

enter image description here

我讀this example這表明使用rcparam這樣的:

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

,但儘管我可以更改文本顏色,它不會更改餅圖切片之間的線條寬度。我相信這是因爲切片不是由線對象控制的,而是由楔形對象控制的。那麼有沒有辦法設置楔形邊框的樣式和顏色?

非常感謝, 亞歷

回答

11

試試這個:

ax = plt.subplot(111) 
wedges, texts = ax.pie(np.abs(np.random.randn(5))) 

for w in wedges: 
    w.set_linewidth(2) 
    w.set_edgecolor('cyan') 

pie

此外,如果你只有一個axes對象,不必餅的挖起桿直接訪問你可以從ax.patches檢索楔子:

wedges = [patch for patch in ax.patches if isinstance(patch, matplotlib.patches.Wedge)] 
+0

當你調用pie時,你也可以傳入'linewidth'。 – tacaswell

+0

@tcaswell只是試圖在matplotlib的'1.3.1',沒有工作 –

+1

是的,這是奇怪/不正確。大部分情節簽名都有** ** kwarg,但是pie沒有。如果我今天有空,我可以做點什麼。 – tacaswell

5

我是來晚了這個晚會,但只是發現,餅圖,而不是使用:

plt.rcParams['lines.linewidth'] = 2 

你可以使用:

plt.rcParams['patch.linewidth'] = 0 

而且,改變餅圖線顏色使用:的

plt.rcParams['patch.edgecolor'] = 'white' 

代替:

plt.rcParams['line.color'] = 'white' 
+0

比上面基本需求更直觀,更容易,謝謝。 – Konrad