2015-08-28 288 views
1

所以我一直在鬼混pie plot()函數,它運行良好,除了當我嘗試在楔形標籤中使用mathtext時(除非在autopct標籤中,我想要號碼,一個\下午(+ - )號和一些相關的號碼)。是否有可能簡單地做到這一點?我是否必須拉出所有楔形對象並操縱它們的文本(可能本身就是一系列Text對象),還是有一些更簡單的方法?我不介意一些複雜性,我只是非常希望能夠做到這一點。Matplotlib餅圖Mathtext標籤/ Autopct

編輯:一個例子將是第一個餅圖例如在matplotlib代碼集:

import matplotlib.pyplot as plt 


# The slices will be ordered and plotted counter-clockwise. 
labels = 'Frogs', 'Hogs', 'Dogs', 'Logs' 
sizes = [15, 30, 45, 10] 
colors = ['yellowgreen', 'gold', 'lightskyblue', 'lightcoral'] 
explode = (0, 0.1, 0, 0) # only "explode" the 2nd slice (i.e. 'Hogs') 

plt.pie(sizes, explode=explode, labels=labels, colors=colors, 
     autopct='%1.1f%%', shadow=True, startangle=90) 
# Set aspect ratio to be equal so that pie is drawn as a circle. 
plt.axis('equal') 

plt.show() 

的想法是將具有通過用+結束autopct格式關鍵字生成的號碼 - 和一些數。

+1

的你在做什麼,一個最小的例子,使問題更容易理解/答案。 – tacaswell

回答

3

我不確定要了解您的問題是否與mathtext或僅創建自定義標籤有關。另外,你不會說你在±符號之後獲得的價值。

這裏我假設你有一個列表,其中包含你想爲每個楔子添加的值。

# The slices will be ordered and plotted counter-clockwise. 
labels = 'Frogs', 'Hogs', 'Dogs', 'Logs' 
sizes = [15, 30, 45, 10] 
colors = ['yellowgreen', 'gold', 'lightskyblue', 'lightcoral'] 
explode = (0, 0.1, 0, 0) # only "explode" the 2nd slice (i.e. 'Hogs') 

patches, texts, autotexts = plt.pie(sizes, explode=explode, labels=labels, colors=colors, 
     autopct='%1.1f%%', shadow=True, startangle=90) 
# Set aspect ratio to be equal so that pie is drawn as a circle. 
plt.axis('equal') 


otherInfo = [3, 5, 3, 4] 

for text, info in zip(autotexts, otherInfo): 
    text.set_text(u"%s ± %.1f" % (text.get_text(), info)) #you can play here with the format to get the label that you want 

enter image description here

+0

嗯,我沒有詳細說明,因爲我只是想知道它是否可以完成。顯然,它當然可以。 –