2013-10-30 42 views
2

我想知道如何創建一個具有相同大小段的餅圖,每個段的顏色代表該段的頻率?python matplotlib - 如何用顏色表示頻率創建餅圖?

這也被稱爲時鐘標誌符號。我的目標是將餅圖分成24段,並繪製幾小時的頻率數據,其中頻率將根據色彩映射圖確定小時段的顏色。

的數據將是這樣的(爲5小時內):

data = [3,34,76,11,90] 

而且我colourmap(mycm)是:

mycm = LinearSegmentedColormap.from_list('mycm',['k','r'])] 

要建立平等段,我想我用是這樣的:

plt.pie([1,1,1,1,1], labels=None, shadow=False, radius=0.5) 

但我怎麼能那麼用我已經基於T標準的colourmap這些顏色他在數據中的頻率值?

在此先感謝!

回答

2

您需要的代碼在下方,並且從Coloring slices of pie chart in matplotlib python改編而來。基本上每個切片的壓裂都具有相同的值(以便所有切片的大小相同),但顏色會通過顏色參數更改。您根據頻率或其他任何您想要的內容來映射顏色。

fracs = ones(len(data))*1/len(data) 
my_norm = matplotlib.colors.Normalize(min(data),max(data)) #this is how we will map our data 

c1 = matplotlib.colors.LinearSegmentedColormap.from_list('mycm',['k','r']) 

plt.pie(fracs, labels=None, shadow=False, radius=0.5, colors=c1(my_norm(data))) 

根據數據的分佈情況,也有可能收到一個餅圖,看起來你只有幾個顏色,因爲我們使用的是線性映射到數據點映射到顏色。如果你想要一張非線性地圖,你可以改變你的數據映射方式(my_norm函數)。例如,您可以在色輪周圍構建等距的顏色陣列,以獲得N種顏色之間的最大差異,並循環顯示顏色,而不是映射顏色。