基於Python的圖表繪圖系統matplotlib,「餅圖「「你真了解嗎?

2021-01-11 CDA數據分析師

按照國際慣例,寫在最開始的是對要介紹對象的定義。喏,這是從維基百科搬運過來的對餅圖的解釋,請安心受下:

餅圖,或稱餅狀圖,是一個劃分為幾個扇形的圓形統計圖表,用於描述量、頻率或百分比之間的相對關係。在餅圖中,每個扇區的弧長(以及圓心角和面積)大小為其所表示的數量的比例。這些扇區合在一起剛好是一個完全的圓形。顧名思義,這些扇區拼成了一個切開的餅形圖案。

當然,文字的解釋永遠沒有一個圖來的直觀:

這也是從維基百科上偷運過來的英語為母語的人口分布餅圖。不客氣的講,這個圖畫的相當簡陋,只能看出來一個大概的比例,像最後三個基本看不出來差別多有多少,所以我們在繪圖的時候儘量加上數量標籤,這樣一眼就能看得出來差距在哪裡了。

畫一個餅圖

畫圖第一步是什麼?當然是要數據啊,所有的圖都是對數據的一種展現形式而已!ok,先來看下我們的數據長什麼樣子:

這是幾個學校語數外平均成績數據的前五行,整個數據源包含21條記錄,也就是有21個學校的平均成績信息,我們計劃查看其中一個學校或者幾個學校的成績餅圖。

先畫一個最簡單的餅圖看看效果:

效果圖如下:

是不是和維基百科搬運過來的餅圖很相像?還比那個多了個標題,嘿嘿…但是前邊說好的要顯示比例標籤呢?別急,其實可以設置的內容還有不少,不止是可以設置比例標籤呢!

完善餅圖

plt.figure(figsize=(8,8),dpi=80) #新建畫布plt.pie(data2.iloc[0,1:] #選取數據源 ,labels=['語文','數學','英語'] #增加標籤 ,autopct='%.2f%%' #設置百分比精度 ,shadow=True #顯示陰影,能夠增加立體感 ,explode=[0.03,0.03,0.03] #設置餅圖各個扇區之間的間隙 ,colors=['r','g','b']) #設置餅圖各個扇區的顏色plt.title('第1小學各學科成績佔比',fontsize=12);

每行代碼的含義都以備註的方式解釋明白了,以上只是常用的參數,當然還有一些不常用的參數並沒有全都一一試驗,給有好奇心的小可愛可以自行探索哈。

接下來查看效果的時間到了:

原諒我比較懶,沒有探索更好看的配色,直接粗暴的用了RGB(逃走)。

一次繪製多個餅圖

一次繪製多個餅圖其實對餅圖沒什麼要求,只是需要添加幾個子圖而已!所謂子圖是相對於我們建立的整個畫布而言的,整個畫布相當與一張白紙,而子圖就相當於是給整張白紙進行了分區,每個分區裡邊放上一個完整的圖形:

pic2 = plt.figure(figsize=(8,8),dpi=80) #新建畫布,由於需要在畫布上增加子圖,所以講新建的畫布賦值一個變量名fig1 = pic2.add_subplot(2,2,1) #第一個子圖(行數,列數,本子圖位置)plt.pie(data2.iloc[0,1:] #選取數據源 第1小學各學科成績 ,labels=['語文','數學','英語'] ,autopct='%.2f%%' #設置百分比精度 ,shadow=True #顯示陰影,增加立體感 ,explode=[0.02,0.02,0.02]) #設置餅圖各個扇區之間的間隙 # ,colors=['r','g','b']) #設置餅圖各個扇區的顏色plt.title('第1小學各學科成績佔比',fontsize=12)#設置子圖的名稱fig2 = pic2.add_subplot(2,2,2) #第二個字圖plt.pie(data2.iloc[1,1:] #選取數據源,第2小學各學科成績 ,labels=['語文','數學','英語'] ,autopct='%.2f%%' #設置百分比精度 ,shadow=True #顯示陰影,增加立體感 ,explode=[0.02,0.02,0.02]) #設置餅圖各個扇區之間的間隙 # ,colors=['r','g','b']) #設置餅圖各個扇區的顏色plt.title('第2小學各學科成績佔比',fontsize=12)fig3 = pic2.add_subplot(2,2,3) #第二個字圖plt.pie(data2.iloc[2,1:] #選取數據源,第3小學各學科成績 ,labels=['語文','數學','英語'] ,autopct='%.2f%%' #設置百分比精度 ,shadow=True #顯示陰影,增加立體感 ,explode=[0.02,0.02,0.02]) #設置餅圖各個扇區之間的間隙 # ,colors=['r','g','b']) #設置餅圖各個扇區的顏色plt.title('第3小學各學科成績佔比',fontsize=12)fig4 = pic2.add_subplot(2,2,4) #第二個字圖plt.pie(data2.iloc[3,1:] #選取數據源,第4小學各學科成績 ,labels=['語文','數學','英語'] ,autopct='%.2f%%' #設置百分比精度 ,shadow=True #顯示陰影,增加立體感 ,explode=[0.02,0.02,0.02]) #設置餅圖各個扇區之間的間隙 # ,colors=['r','g','b']) #設置餅圖各個扇區的顏色plt.title('第4小學各學科成績佔比',fontsize=12);

添加子圖需要注意的是在新建畫布的時候,需要給畫布賦值一個變量名,方便添加子圖。另外添加幾個子圖一般是通過子圖的行數和列數來確定的,例如上邊代碼中是2行2列,即一共是4個子圖。

效果圖如下:

代碼中對顏色設定的部分被注釋掉了,所以這裡的顏色是默認的顏色,美商高的小可愛們可以自行探索顏色的搭配,matplotlib之餅圖,你學會了嗎?

相關焦點

  • 如何用matplotlib繪圖呢?
    什麼是matplotlib?使用過python做數據分析的小夥伴都知道,matplotlib是一款命令式、較底層、可定製性強、圖表資源豐富、簡單易用、出版質量級別的python 2D繪圖庫。matplotlib算是python繪圖的元老級庫,類似程式語言裡的C語言。很多其它的python繪圖庫是基於matplotlib開發的,比如seaborn、ggplot、plotnine、holoviews、basemap等。matplotlib可用於python腳本、python shell、jupyter notebook、web等。
  • matplotlib繪圖的核心原理講解
    作者:朱小五來自:凹凸數據(ID:alltodata)matplotlib是基於Python語言的開源項目,旨在為Python提供一個數據繪圖包。相信大家都用過它來數據可視化,之前我還分享過25個常用Matplotlib圖的Python代碼。可是你了解過它繪圖的核心原理嗎?
  • 基於Python的圖表繪圖系統matplotlib,「動態條形圖」你了解嗎?
    來看一下上邊截取出來的數據集繪製出來的條形圖是什麼樣子的:plt.figure(figsize=(10,6))plt.barh(dff['球隊'], dff['積分']);ok,畫出來是符合要求的條形圖!設置條形顏色如果不設置顏色,畫出來的所有條都是一個顏色,就像上邊的那幅圖。
  • python matplotlib畫圖教程學習:使用介紹
    本篇文章介紹matplotlib包使用時,需要掌握的一些基本概念。下圖顯示了matplotlib圖形的基本構成部分,如figure(圖形)、axes(子圖形)、title(標題)、legend(圖例)、Major tick(大標尺刻度)、Minor tick(小標尺刻度)、Major tick label(大標尺刻度數值)、Minor tick label(小標尺刻度數值)、Y axis label(y軸指標說明)、X axis label(x軸指標說明)、Line
  • Python 繪圖庫 Matplotlib 入門教程
    /Matplotlib是一個Python語言的2D繪圖庫,它支持各種平臺,並且功能強大,能夠輕易繪製出各種專業的圖像。如果你已經有了本文的運行環境,將上面的代碼保存到一個文本文件中(或者通過Github獲取本文的源碼),然後通過下面的命令就可以在你自己的電腦上看到上面的圖形了:python3 test.py 注1:後面的教程中,我們會逐步講解如何定製圖中的每一個細節。例如:坐標軸,圖形,著色,線條樣式,等等。
  • Matplotlib繪圖|快速定義圖表樣式的小技巧
    Matpltlibrc file 設置圖表屬性Matplotlib 在繪圖過程中,每創建一個圖表,都要對該圖表內的樣式(例如 字體大小、顏色、解析度、橫縱坐標刻度、橫縱坐標標籤)設置一次,重複乏味,如下展示的是一個正弦函數曲線X =np.linspace(-np.pi,np.pi,256,endpoint =True)S = np.sin(X)plt.plot
  • matplotlib的Python數據可視化和探索——入門指南
    Matplotlib提供了一種簡單而全面的可視化方法來介紹我們的發現。我們將在本教程中很快看到,有很多可視化可供選擇,以展示我們的結果。從直方圖到散點圖,matplotlib設置了一系列顏色,主題,調色板和其他選項以自定義和個性化我們的圖。無論您是在為機器學習項目執行數據探索,還是只是想創建令人眼花and亂的圖表,matplotlib都非常有用。
  • 未明學院:Python可視化庫Matplotlib繪圖入門詳解
    Matplotlib是Python的繪圖庫,其中的pyplot包封裝了很多畫圖的函數。Matplotlib.pyplot 包含一系列類似 MATLAB 中繪圖函數的相關函數。每個 Matplotlib.pyplot 中的函數會對當前的圖像進行一些修改,例如:產生新的圖像,在圖像中產生新的繪圖區域,在繪圖區域中畫線,給繪圖加上標記,等等…… Matplotlib.pyplot 會自動記住當前的圖像和繪圖區域,因此這些函數會直接作用在當前的圖像上。
  • 這麼用MatPlotLib視覺化呈現數據,你值得擁有!
    使用畫中畫python -m pip install -U pippython -m pip install -U matplotlib2. 使用Python科學包有許多第三方科學包,如:· Anaconda· Canopy· Activestate本文最推薦Anaconda。
  • 基於Python圖表繪圖系統:matplotlib散點圖和氣泡圖,你了解嗎?
    慣例先來簡單介紹下什麼是散點圖:用兩組數據構成多個坐標點,考察坐標點的分布,判斷兩變量之間是否存在某種關聯或總結坐標點的分布模式。散點圖將序列顯示為一組點。值由點在圖表中的位置表示。類別由圖表中的不同標記表示。
  • 如何構建一個基於可視化理論的完美Python圖表?
    對兩個繪圖工具Matplotlib和Plotly的使用將貫穿本教程。Matplotlib的logo;Plotly的logo。1. Matplotlib: 這一舊的繪圖引擎驅動了眾多先前的實驗代碼,其對工程師的支持已淪為過去。2. Plotly:數據科學、數據分析以及我的職業生涯未來的繪圖工具。
  • 使用Matplotlib可視化數據的5個強大技巧
    它可以用柱狀圖、散點圖、折線圖、餅圖等形式形成。許多人仍然使用Matplotlib作為後端模塊來可視化他們的圖形。在這個故事中,我將給你一些技巧,使用Matplotlib創建一個優秀圖表的5個強大技巧。1. 使用Latex字體默認情況下,我們可以使用Matplotlib提供的一些不錯的字體。但是,有些符號不夠好,不能由Matplotlib創建。
  • Python數據可視化技能提升—用好matplotlib第1篇
    你說滴這個matplotlib庫到底是啥東東呢?那咱們就說一下吧!其實呢,matplotlib庫是Python中用於繪製二維啦、三維啦等這些圖標的數據可視化工具哦,它滴特點也是很有優勢滴,比如它可以使用一些簡單的繪圖語句就可實現複雜的繪圖效果,而且可以以交互式操作實現漸趨精細的圖形效果,此外呢還可以對圖表的組成元素實現精細化控制,還有等等特點和優勢,說到這你是不是已經對matplotlib的興趣激增了呢?好啦,那咱們就正式開始介紹matplotlib庫吧!
  • 30分鐘入門 Matplotlib 繪圖
    Matplolib最初主要模仿Matlab的畫圖命令,但是它是獨立於Matlab的,可以自由、免費使用的繪圖包。Matplotlib依賴於之前介紹的Numpy庫來提供出色的繪圖能力。Matplotlib的官網地址http:MatplotlibAPI的詳細介紹請參考官網地址:http:Windows,Linux,Mac 三種作業系統都可以安裝Matplotlib庫。以Windows為例,進入CMD窗口中,使用pip命令安裝Matplotlib,系統會自動進行安裝。
  • 如何用Python畫一手漂亮的圖表
    · pyplot入門· Matplotlib:子圖· 重要圖形類型· 條形圖· 直方圖· 散點圖· Matplotlib:三維繪圖· 動手演示什麼是Matplotlib?· Matplotlib是一個開源的圖形庫,支持各種圖形類型· 您只需幾行代碼即可生成圖表,直方圖,條形圖和其他類型的圖表· 它通常用於Web應用程式伺服器,shell和Python腳本中。Pyplot入門Pyplot是Matplotlib模塊,它提供了簡單的功能,可將繪圖元素(如線條,圖像,文本等)添加到當前圖形的軸上。
  • 手把手教你用Matplotlib進行數據可視化
    有什麼發現嗎?問題是,這取決於你在何處運行這個腳本,你可能什麼都看不到。以下是可以考慮的可能性:1. 從.py腳本繪圖如果你正從一個腳本運行matplotlib,那麼你只需要調用plt,如下所示:plt.show() 調用後,圖形就會顯示出來!2.
  • 見識matplotlib:不常見的一面,折線圖!
    眾所周知,matplotlib是python繪圖的基礎包,能夠生成各種各樣2D或者3D的圖形,用法算是多而全的那種,下邊是matplotlib官網首頁作為例子的幾張圖,大家感受一下:什麼?醜拒?不不不,別激動!其實matplotlib一直是一個低調奢華有內涵的包,需要我們透過它樸實無華的外表認清它豐富多彩的內在,來康康這條妖嬈的曲線,有沒有感受到它的召喚?
  • 這幾個常用的python庫你需要知道
    python可以說是近幾年最火熱、最實用的、最容易上手的工具之一了。功能強大、應用廣泛,可以幫你搜集工作數據,還能幫你下載音樂,電影,於是就掀起了一波學習python的大潮,小編也毫不猶豫的加入了。但是對於向小編一樣的小白來說,剛開始學習還是有些困難的,需要首先了解python的一些基礎知識。所以小編就整理了一些常用的python庫,希望對正在學習python的小夥伴有所幫助。1.MatplotlibMatplotlib是一個用於創建二維圖和圖形的底層庫。
  • matplotlib中文顯示之圖表大全
    全局支持中文顯示以及指定局部中文顯示https://aistudio.baidu.com/aistudio/projectdetail/390895使用中還有問題可以在論壇中提出(你的問題可能大家已經討論過了)https://ai.baidu.com/forum/topic/show/958873考慮到部分同學對matplotlib本身不是太熟悉
  • 這10個python數據可視化庫,通吃任何領域
    儘管matplotlib有助於了解數據,但它對於快速、輕鬆地創建可發布的圖表用處不大。正如Chris Moffitt在他的Python可視化工具的概述中所稱,matplotlib「功能非常強大,但同時也很複雜」。