(1)
餅圖(pie),即在一個圓圈內分成幾塊,顯示不同數據系列的占比大小,這也是我們在日常數據的圖形展示中最常用的圖形之一。
在python中常用matplotlib的pie來繪制,基本命令如下所示(python3.X版本):
vals = [1, 2, 3, 4]#創建數據系列fig, ax = plt.subplots()#創建子圖labels = 'A', 'B', 'C', 'D'colors = ['yellowgreen', 'gold', 'lightskyblue', 'lightcoral']explode = (0, 0.1, 0, 0)ax.pie(vals, explode=explode, labels=labels, colors=colors, autopct='%1.1f%%', shadow=True, startangle=90,radius=1.2)ax.set(aspect="equal", title='Pie plot with `ax.pie`')#設置標題以及圖形的對稱plt.show()

上圖是在對餅圖的模塊顏色、標簽、百分比、標題、角度、圓形半徑,以及某一塊凸出(explode)進行設置后,最終呈現的圖形效果。大部分設置來自于pie()函數內,即:
pie(x, explode=None, labels=None, colors=None, autopct=None, pctdistance=0.6,shadow=False, labeldistance=1.1, startangle=None, radius=None)
對于該函數內各參數的含義,網上資料比比皆是,在這里不再贅述,大家可以根據自己需求來多次嘗試,設置美化圖形。
(2)
目前matplotlib中尚無雙層餅圖繪制的專門介紹,但是,我們注意到pie()函數中有個餅圖半徑的設置——radius,于是,我就想:可不可以在同一個figure下繪制兩個不同的圓餅,形成嵌套餅圖,從而制作出雙層餅圖?比如:
作圖如下:
vals1 = [1, 2, 3, 4]vals2 = [2, 3, 4, 5]fig, ax = plt.subplots()labels = 'A', 'B', 'C', 'D'ax.pie(vals1, radius=1.2)ax.pie(vals2, radius=1)ax.set(aspect="equal", title='Pie plot with `ax.pie`')plt.show()

初戰告捷!令我信心大增!
因此,在matplotlib下繪制雙層餅圖的方法可以總結為:基于不同的數據系列,分別設計兩個餅圖,嵌套在一起,對每個餅圖的pie()函數內參數radius進行設置,就可以得到雙層餅圖。
(3)
但是,可以看到上面的那個圖形還有點粗糙,還可以加入百分比、color等等,進一步設置:
vals1 = [1, 2, 3, 4]vals2 = [2, 3, 4, 5]fig, ax = plt.subplots()labels = 'A', 'B', 'C', 'D'ax.pie(vals1, radius=1.2,autopct='%1.1f%%',pctdistance=0.9)ax.pie(vals2, radius=1,autopct='%1.2f%%',pctdistance=0.5)ax.set(aspect="equal", title='Pie plot with `ax.pie`')#plt.legend()plt.legend(labels,bbox_to_anchor=(1.05, 1), loc='best', borderaxespad=0.)plt.show()

為方便,在這里沒有對顏色、角度進行參數設置,后期若大家有興趣,可以進一步加入不同參數再次設置。在這里主要說明的是:
新聞熱點
疑難解答