從零開始學Python可視化(二):掌握統計圖形的繪製

2021-01-08 百家號

折線圖和散點圖常用且實用,但是並不能滿足我們的作圖需求。

這次我們會嘗試更多常見的統計圖形,比如條形圖、直方圖、餅圖等,我們的目標是掌握工作學習過程中使用最頻繁的圖形技能。

1. 柱狀圖(條形圖) —— bar() / barh()

柱狀圖又叫條形圖,用於繪製定性(分類)數據的分布特徵,比如不同國家的GDP、不同年齡段的平均體重等。這次,我們以一組學生的身高來演示它的作圖方法。

import matplotlib.pyplot as plt# 生成數據x = [1, 2, 3, 4, 5, 6, 7, 8]y = [176, 165, 188, 150, 170, 180, 172, 160]# 畫柱狀圖plt.bar(x, y, align = 'center', color = 'c', tick_label = ['q', 'a', 'c', 'e', 'r', 'j', 'b', 'p'], hatch = '/') # 設置軸標籤plt.xlabel('學生編號')plt.ylabel('身高(cm)')plt.show()

參數:

align:對齊方式,即條形相對於刻度的位置color:顏色tick_label:刻度的標籤hatch:填充我們還可以使用barh畫水平(horizontal)方向的條形圖,它們兩個函數的參數基本一致,只是我們要將xlabel和ylabel的值對調一下(注意:x和y不需要對調):

import matplotlib.pyplot as plt# 生成數據x = [1, 2, 3, 4, 5, 6, 7, 8]y = [176, 165, 188, 150, 170, 180, 172, 160]# 畫柱狀圖plt.barh(x, y, align = 'center', color = 'c', tick_label = ['q', 'a', 'c', 'e', 'r', 'j', 'b', 'p'], hatch = '/')# 設置軸標籤plt.xlabel('身高(cm)')plt.ylabel('學生編號')plt.show()

2. 直方圖 —— hist()

直方圖跟條形圖很像,但是直方圖是用於表現定量數據的分布,比如說中國人口的年齡分布情況、一所高中高三所有學生的高考成績的分布情況等。跟bar()和barh()不同的是,hist()函數輸入的只有一組數據,在輸出的圖形中,橫坐標對應著不同的分組,縱坐標則對應著該組的計數。

import matplotlib.pyplot as pltimport numpy as np# 生成數據x = np.random.randint(0, 10, 500)# 直方圖plt.hist(x, bins = range(0, 11), color = 'g', histtype = 'bar', rwidth = 0.95, alpha = 0.6) # 設置軸標籤plt.xlabel('分組')plt.ylabel('計數')plt.show()

參數:

bins:如果參數是一個整數,則相當於我們制定了分桶的數量,如果參數是一個列表,則相當於我們指定了每個分桶的邊界。histtype:分桶樣式rwidth:相對寬度,即每個柱子寬度相對於兩個刻度之間寬度的比例。alpha:透明度3. 餅圖 —— pie()

餅圖主要用於繪製不同類型的百分比,比如不同國家的人口佔比、一個員工的薪資構成等。我們假設有ABCD四個公司,他們瓜分了一塊市場,我們用餅圖來將他們的市場佔有情況表現出來:

import matplotlib.pyplot as pltimport numpy as np# 生成數據ratio = [0.1, 0.4, 0.35, 0.15]labels = ['A', 'B', 'C', 'D']# 直方圖plt.pie(ratio, labels=labels, autopct='%3.1f%%', startangle=90)# 設置軸標籤plt.title('不同公司市場佔比')plt.show()參數:

labels: 類別標籤/名稱autopct:餅圖種比例數字的格式startangle:起始角度,默認會逆時針從水平0度角開始排列color:我們可以用一個列表指定不同分類的顏色

4. 極線圖 —— polar()

這一函數用於在極坐標軸上繪製折線圖。

import matplotlib.pyplot as pltimport numpy as np# 生成數據theta = np.linspace(0, 2*np.pi, 12, endpoint=False)r = np.random.rand(12)# 極線圖plt.polar(theta, r, color = 'chartreuse', linewidth = 2, marker = '*', mfc = 'b', ms = 10)plt.show()

5. 散點圖 —— scatter()

我們在之前已經接觸過散點圖了,但是這次我們將展示更強大的散點圖。

import matplotlib.pyplot as pltimport matplotlib as mplimport numpy as np# 生成數據x = np.random.randn(100)y = np.random.randn(100)# 散點圖plt.scatter(x, y, s = np.power(10*x+20*y, 2), c = np.random.rand(100), cmap = mpl.cm.RdYlBu, marker = 'o', alpha = 0.3))plt.show()我們指定了橫縱坐標的數據、每個點的大小、每個點的顏色以及浮點數到顏色的映射表、標記的形狀以及透明度,看,通過這種方式,我們可以對多維數據進行可視化。

6. 杆圖 —— stem()

劉大成先生在《Python數據可視化之matplotlib實踐》一書中將其翻譯為棉棒圖,挺形象的,但是我還是強行使用了杆圖的名字,雖然這個名字簡直難聽到了天際……

杆圖用於繪製離散而有序的數據,在圖中,這些離散的點會分布在一條基線的上下兩側,我們可以直觀地感受到它們的波動趨勢以及分布情況。

import matplotlib.pyplot as pltimport numpy as np# 生成數據x = np.linspace(0, 10, 20)y = np.random.randn(20)# 繪圖plt.stem(x, y, linefmt='-.', markerfmt='o', basefmt='-')plt.show()參數:

linefmt:離散點到基線的垂線的樣式markerfmt:離散點的樣式basefmt:基線的樣式這裡fmt是format的簡寫。

7. 箱線圖 —— boxplot()

箱線圖是非常經典、實用且常用的一種用於觀察連續數據分布的圖形,它能清晰地展示出數據的上下四分位數、上下邊緣、中位數的位置,還能根據規則幫助我們確定一些異常值,是觀察數據分布的一大利器。

import matplotlib.pyplot as pltimport numpy as np# 生成數據x = np.random.randn(1000)# 繪圖plt.boxplot(x)# 添加網格plt.grid(axis='y', ls=':', lw=1, color='gray', alpha=0.4)plt.show()

8. 誤差棒圖 —— errorbar()

此函數用於繪製y軸方向或者x軸方向的誤差範圍:

import matplotlib.pyplot as pltimport numpy as np# 生成數據x = np.linspace(0, 1, 10)y = np.exp(x)# 繪圖plt.errorbar(x, y, fmt=':og', yerr=np.power(x, 2), xerr=0.02)plt.show()這裡我們使用橫坐標的平方作為y軸方向上的誤差,同時使用一個常數0.02作為x軸方向上的誤差。在fmt(format)參數下,我們使用』:og』將線條設置為虛線、將數據點設置為大圓點、將顏色設置為綠色。

好了,以上就是今天要分享的幾種常用的統計圖形,今天我們的目標就是掌握這些圖形對應的函數的基本調用,後邊我們會詳細探索它們在實際的數據分析過程中的應用。

相關焦點

  • 超硬核的 Python 數據可視化教程!
    matplotlibpython中最基本的作圖庫就是matplotlib,是一個最基礎的Python可視化庫,一般都是從matplotlib上手Python數據可視化,然後開始做縱向與橫向拓展。Seaborn是一個基於matplotlib的高級可視化效果庫,針對的點主要是數據挖掘和機器學習中的變量特徵選取,seaborn可以用短小的代碼去繪製描述更多維度數據的可視化效果圖其他庫還包括Bokeh(是一個用於做瀏覽器端交互可視化的庫,實現分析師與數據的交互);Mapbox(處理地理數據引擎更強的可視化工具庫)等等本篇文章主要使用
  • 數據科學的Python軟體包
    3.Pandas除了Python的NumPy庫之外,Pandas是第二個在python數據科學項目中大量使用的庫。它被用於各個領域,包括統計,金融,經濟和數據分析。它基於NumPy構建,這意味著它使用NumPy數組來處理Pandas對象。熊貓經常在需要處理大量數據時使用,並且不能單獨執行所有處理,因此它使用NumPy構造數據,並使用SciPy進行統計。
  • Python學習第90課-數據可視化之散點圖繪製
    【每天幾分鐘,從零入門python編程的世界!】今天我們學習散點圖,在統計學或者機器學習方面,或者在金融風險控制方面,金融風險控制經常要看異常交易、信貸風險,做這樣的分析就要用到一個圖--散點圖(scatter plot)。
  • Pandas可視化綜合指南:手把手從零教你繪製數據圖表
    曉查 編譯整理量子位 出品 | 公眾號 QbitAI數據可視化本來是一個非常複雜的過程,但隨著Pandas數據幀plot()函數的出現,使得創建可視化圖形變得很容易。在數據幀上進行操作的plot()函數只是matplotlib中plt.plot()函數的一個簡單包裝 ,可以幫助你在繪圖過程中省去那些長長的matplotlib代碼。
  • Python學習第89課-數據可視化之直方圖繪製
    【每天幾分鐘,從零入門python編程的世界!】假設你想投資某一個城市的房地產,你肯定需要對這個城市的人口分布、增長潛力做一個調查,這時我們就需要做一個直方圖(histogram plot)。因此,我們大概可以這樣理解:直方圖就是把數據劃分區域後,以數據區域為節點繪製的柱狀圖的集合。我們設置bins如下:bins=[0,10,20,30,40,50,60,70,80,90,100]根據Python的習慣,算頭不算尾,即0-9為一個bin,10-19為一個bin,依次類推。
  • Python視頻教程網課編程零基礎入門數據分析網絡爬蟲全套Python...
    python教程大合集,包含python所有就業方向,每套課程均來自市面上主流培訓機構的原版教程,價值都在數百元以上 每套課程均包含:視頻課程+課件+原始碼 重要:建議根據自己工作方向和需求,重點選擇2到3套課程學精,吃透,然後在工作 重要:零基礎小白建議先選擇零基礎全能篇的一套課程學精,然後再根據自 己的需求和規劃選擇學習其他方向課程,學完後一定要多實踐
  • Python可視化Seaborn庫詳解——繪圖方法
    在《Python可視化Seaborn庫詳解——繪圖設置》一文中,我們介紹了Seaborn庫的繪圖參數設置,本文我們將介紹具體的繪圖方法。其實雖然Seaborn庫看著繪圖函數多,但有幾個函數的泛化性非常強,通過參數的設置是可以繪出多種圖形的。為了便於掌握這些函數,本文會對這些方法進行歸納整理,力爭做到提綱挈領的目的。
  • Python數據可視化之高速繪圖神器PyQtGraph庫,強烈建議收藏
    01為什麼使用PyQtGraph庫我們知道,在Python中,已經有了很多可供選擇的數據可視化庫。但是這些繪圖庫也存在著不足,即在圖形繪製速度上有所欠缺,特別是對於科研算法方面的數據可視化,很多情況需要實時繪圖,要求能夠提供儘可能快的繪製刷新速度,那這些庫顯的有些力不從心了。而我們下面要介紹的繪圖庫-PyQtGraph庫,則在繪圖速度方面表現尤其突出,在不失繪圖美觀、功能強大的前提下,在繪圖速度方面作了極大的優化,特別適合於實時數據採集的動態圖形繪製場合。
  • 可視化工具不知道怎麼選?深度評測5大Python數據可視化工具
    作者 | 劉早起來源 | 早起Python(ID: zaoqi-python)相信很多讀者學習Python就是希望作出各種酷炫的可視化圖表,當然你一定會聽說過Matplotlib、Pyecharts、Seaborn、Plotly、Bokeh這五大工具,本文就將通過真實繪圖來深度評測這五個Python數據可視化的庫,看看到底這幾種工具各有什麼優缺點
  • 數據分析與挖掘 - 08圖形繪製
    一 圖的基本構成Matplotlib是數據可視化工作中,最常用的一個可視化庫。Matplotlib有非常多的圖形,我們很難在短時間內將其掌握,所以我們首先要掌握的是畫圖的思路和常用的一些圖形。創建一個圖的步驟大致可以分為9步,當然這9步並不是每一次都需要,只要你知道一個完整的圖形可以有這麼多的步驟就可以。
  • python機器學習:常用庫的介紹及安裝
    今天,我們就從零基礎開始學習人工智慧的基礎篇——機器學習。工欲善其事必先利其器,所以,我們首先來看一下,我們要學習這些東西,需要準備些什麼!首先電腦一臺,這是必備的。下面我們來看一下需要安裝些什麼軟體到電腦上!
  • 數據工程師需要掌握的 18 個 Python 庫
    作者 | 劉早起早起責編 | 屠敏本文對Python中在數據分析中需要掌握的庫進行了整理,一起來看看吧!數據可視化Matplotlibmatplotlib是受MATLAB的啟發構建的。MATLAB是數據繪圖領域廣泛使用的語言和工具。MATLAB語言是面向過程的。利用函數的調用,MATLAB中可以輕鬆的利用一行命令來繪製,然後再用一系列的函數調整結果。它有一套完全仿照MATLAB的函數形式的繪圖接口,在matplotlib.pyplot模塊中。
  • Python語言中使用pyqtgraph庫實現數據可視化
    背景在Python程式語言中,matplotlib是一種常用的用於數據可視化的繪圖庫,它提供了一套和matlab相似的命令API,開發者可以僅需幾行代碼,便可生成如直方圖,功率譜,條形圖,錯誤圖,散點圖等圖形,適用於交互式繪圖,而且也可以方便地將它作為繪圖控制項嵌入到GUI應用程式中
  • 使用biopython可視化染色體和基因元件
    基因組結構元件的可視化有多種方式,比如IGV等基因組瀏覽器中以track為單位的展示形式,亦或以circos為代表的圈圖形式,比如在細胞器基因組組裝中,基因元件常用圈圖形式展示,示例如下
  • 從零開始學 Python 之輸入與輸出
    rb以二進位格式打開一個文件用於只讀。文件指針將會放在文件的開頭。r+打開一個文件用於讀寫。文件指針將會放在文件的開頭。rb+以二進位格式打開一個文件用於讀寫。文件指針將會放在文件的開頭。如果該文件已存在則打開文件,並從開頭開始編輯,即原有內容會被刪除。如果該文件不存在,創建新文件。wb以二進位格式打開一個文件只用於寫入。如果該文件已存在則打開文件,並從開頭開始編輯,即原有內容會被刪除。如果該文件不存在,創建新文件。w+打開一個文件用於讀寫。
  • Python可視化很簡單,一文學會繪製柱狀圖、條形圖和直方圖
    matplotlib庫作為Python數據化可視化的最經典和最常用庫,掌握了它就相當於學會了Python的數據化可視化,通過前幾次呢,咱們已經討論了使用matplotlib庫中的圖表組成元素的幾個重要函數,相信大家已經學會並掌握了哦,今天呢,咱們再深入一點哦,一起來聊聊關於如何繪製柱狀圖
  • 必聽公開課:從零入門科研數據可視化雲平臺
    以生物醫學為例,大多數臨床醫學學生和初級科研工作者一般需要花費數十天乃至數月的時間去熟悉和掌握常用的數據可視化工具,如SPSS、Origin 以及 Graphpad等。之後才有可能去完成部分基礎的數據統計分析和可視化。  一圖勝千言,高質量的配圖不僅可以充分展示科研成果,還能吸引審稿人的眼球,提高SCI期刊論文的接受率。
  • 學習筆記,從NumPy到Scrapy,學習Python不能錯過這些庫
    在網絡上看到幾位前輩寫了關於python深度學習庫的文章,對於小小白來說,因為我剛開始學python,我得承認自己看完後依然覺得雲裡霧裡的,不知道這些庫到底對我有什麼用處。所以我到網絡上搜集補充關於這些庫的說明內容,感覺在這個整理資料的過程中,對於這些python程序庫了解了更多,以下是我整理的學習筆記。
  • 如何在Python中創建交互式可視化?(建議收藏)
    如何在Python中創建交互式可視化。在探索添加更多交互控制項之前,我們將僅以不同格式繪製數據開始。如果您一直關注我一段時間,會注意到這是數據可視化系列文章中的第三篇。首先使用默認的python可視化庫matplotlib引入了數據可視化。然後,我們學習了如何使用相同的庫在時間序列上創建動畫可視化效果。
  • python可視化
    基於pandas的內置可視化基本繪圖Series和DataFrame上的這個功能只是使用matplotlib庫的plot()方法的簡單包裝實現。我們可以使用x和y關鍵字繪製一列與另一列。繪圖方法允許除默認線圖之外的少數繪圖樣式。 這些方法可以作為plot()的kind關鍵字參數提供。