matplotlib的環形圖,你真瞭解嗎?

​ 環形圖是餅圖衍生出來的統計圖形,可以看作是兩個以上餅圖的疊合。環形圖與餅圖類似,其實是有差別的。餅圖是用圓形及圓內扇形的面積來表示數值大小的圖形,主要用於表示總體中各組成部分所佔的比例。與之對比,環形圖中間留有空白,可以用多個環展示多個樣本,既可以表示每個樣本中各部分的佔比,又可以對多個樣本的結構同時進行對比。

​ 文字表達永遠沒有圖片來的直觀,從網上隨便搜了一個環形圖先簡單感受下:

繪製簡單環形圖

​ 上邊的環形圖只有一個環,實際上可以根據需要繪製多個環嵌套在一起的環形圖,並且也可以加上每一段弧形所佔的比例,我們先從簡單的開始,繪製一個簡單的環形圖。

​ 先看下數據源長什麼樣子,依然是繪製餅圖時用到的數據:

​ 所謂環形圖,其實用到的依然是繪製餅圖的函數,只是對其中的參數進行設置後形成環形圖,我們先來繪製一個簡單的第一小學成績環形圖:

plt.figure(figsize=(8,8)) #新建畫布,畫布大小爲8*8

plt.pie(data2.iloc[0,1:] #截取第一小學的成績
        ,radius=1 # 設置半徑爲1
        ,labels=['語文','數學','英語'] #設置各個角的標籤
        ,autopct='%.2f%%' #設置精度爲小數點後兩位
        ,textprops={'fontsize': 14, 'color': 'k'} #設置標籤字體和顏色
        ,wedgeprops=dict(width=0.4, edgecolor='w')); #設置餅弧寬度和邊框顏色

​ 和之前繪製餅圖不同的是多設置了三個參數,一個是設置半徑,一個是設置字體和顏色(介紹餅圖的文章中餅圖中字體有點小,顏色是默認的黑色,其實字體大小和顏色都是可以設置的),最後一個是設置弧度寬度和邊框顏色,所謂弧度的寬度其實就是環形的寬度。

​ 來看下效果:

​ 像這種簡單的環形圖,作用和餅圖差不多,只能反映一個小學的成績情況,如果想要查看兩個學校對比的情況需要繪製兩個圖,當然環形圖可以解決這個問題,下邊我們來看下升級版的環形圖!

繪製升級版環形圖

​ 以繪製兩個環形爲例:

plt.figure(figsize=(8,8)) #新建畫布,畫布大小爲8*8

plt.pie(data2.iloc[0,1:] #截取第一小學的成績
        ,radius=1 # 設置半徑爲1
        ,labels=['語文','數學','英語'] #設置各個角的標籤
        ,autopct='%.2f%%' #設置精度爲小數點後兩位
        ,textprops={'fontsize': 14, 'color': 'k'} #設置標籤字體和顏色
        ,wedgeprops=dict(width=0.4, edgecolor='w')) #設置餅弧寬度和邊框顏色

plt.pie(data2.iloc[1,1:] #截取第二小學的成績
        ,radius=0.6 # 設置半徑爲0.6
        ,autopct='%.2f%%'#設置精度爲小數點後兩位
        ,textprops={'fontsize': 12, 'color': 'w'}#設置標籤字體和顏色
        ,wedgeprops=dict(width=0.4, edgecolor='w'));#設置餅弧寬度和邊框顏色

​ 以前的文章提到過,可以在同一塊畫布上重複繪圖,在繪製堆積條形圖的時候用到的就是這個知識點,繪製多個環的環形圖也是相同的道理。

​ 在同一塊畫布上繪製兩個環,一個大環一個小環,需要注意的是要先繪製大環,後繪製小環,因爲後繪製的圖會覆蓋先繪製的圖,所以我們設置第一個環的半徑是1,後邊繪製的環半徑是0.6,來看下效果:

​ 喏,就是這個效果了,這個圖還缺少一個標題,相信大家都知道如何添加圖形標題了。

​ 當然這個環形圖中的兩個環挨在一起了,平時我們看到的環形圖每個環之間會有一點間隙,能夠很明顯的看出是兩個分離的環,其實這個也不難!仔細觀察上邊的代碼,兩個環之間的半徑差是0.4,而我們對弧形寬度也設置的是0.4,所以兩個環之間一點縫隙都沒有,通過對這兩個參數的設置就可以控制兩個環之間的距離了。

plt.figure(figsize=(8,8))

plt.pie(data2.iloc[0,1:]
        ,radius=1
        ,labels=['語文','數學','英語']
        ,autopct='%.2f%%'
        ,textprops={'fontsize': 14, 'color': 'k'}
        ,wedgeprops=dict(width=0.3, edgecolor='w'))

plt.pie(data2.iloc[1,1:] 
        ,radius=0.6 
        ,autopct='%.2f%%'
        ,textprops={'fontsize': 14, 'color': 'k'}
        ,wedgeprops=dict(width=0.3, edgecolor='w'))

plt.title("第一小學(外環)和第二小學(內環)成績圖");

​ 兩個環形的半徑差沒有變,依然是0.4,我們把弧形寬度改成了0.3,來看下效果:

​ 這樣是不是就變成大家心目中環形圖的樣子了(我又偷偷的加上標題了)?這是兩個學校的成績環形圖,如果想要多畫幾個環,記得把半徑差設置大一點,弧形寬度設置小一點,能夠容納多個環形就可以啦!

​ 你學會了嗎?

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章