天天看點

第92天:Python Matplotlib 進階操作

by 潮汐

本章節主要是 Matplotlib 和 NumPy 實際操作案例講解,matplotlib 通常與 NumPy 一起使用,提供了一種有效的 MatLab 開源替代方案,除此之外,它還可以和其他圖形工具包搭配使用。前提是在現在的環境中已經安裝了 Numpy 子產品,Numpy 安裝詳情請參考第 79 天:資料分析之 Numpy 初步

這一節将從簡到繁用執行個體講解 matplotlib 和 Numpy 結合使用的知識點。

使用 Numpy的函數 <code>np.arange()</code> 函數建立 x 軸上的值。将 y 軸上的對應值存儲在另一個數組對象 y 中。 這些值使用 matplotlib 軟體包的 pyplot 子子產品的 plot() 函數繪制。

執行個體如下:

以上程式運作結果圖:

注意:作為線性圖的替代,可以通過向 plot() 函數添加格式字元串來顯示離散值,可以使用以下格式化字元,表格如下:

字元

描述

'-'

實線樣式

'--'

短橫線樣式

'-.'

點劃線樣式

':'

虛線樣式

'.'

點标記

','

像素标記

'o'

圓标記

'v'

倒三角标記

'^'

正三角标記

'&lt;'

左三角标記

'&gt;'

右三角标記

'1'

下箭頭标記

'2'

上箭頭标記

'3'

左箭頭标記

'4'

右箭頭标記

's'

正方形标記

'p'

五邊形标記

'*'

星形标記

'h'

六邊形标記 1

'H'

六邊形标記 2

'+'

加号标記

'x'

X 标記

'D'

菱形标記

'd'

窄菱形标記

'|'

豎直線标記

'_'

水準線标記

圖形顯示顔色縮寫簡寫表格如下:

顔色

'b'

藍色

'g'

綠色

'r'

紅色

'c'

青/綠色

'm'

品紅色

'y'

黃色

'k'

黑色

'w'

白色

橙色

使用以上兩個表格表示的簡化符号畫一個綠色散點圖,散點使用 <code>'o'</code>表示,,具體執行個體如下:

以上程式運作結果為:

例如繪制一個倒三角圖形:

顯示結果如下:

正弦波形圖的繪制需要用到 Numpy 的數學函數 sin() 和 cos(),詳細的數學函數使用請參考 NumPy 系列文章:第 84 天:NumPy 數學函數

顯示結果:

在一張圖中顯示出正弦函數和餘弦函數,這裡需要使用 subplot 來建立網格圖,一幅圖中使用兩個網格,兩個網格中分别展示正弦函數和餘弦函數;subplot 函數使用說明如下:

matplotlib 中, 一個 Figure 對象可以包含多個子圖(Axes), 可以使用 subplot() 快速繪制, 調用形式如下 :

參數說明:

圖表的整個繪圖區域被分成 numRows 行和 numCols 列

然後按照從左到右,從上到下的順序對每個子區域進行編号,左上的子區域的編号為1,左下子區域編号為3,右上子區域編号為2,右下子區域編号為 4,當然具體的還要看指定網格的行數和列數而定。

plotNum 參數指定建立的 Axes 對象所在的區域

網格編号圖如下:

假如 numRows = 2, numCols = 3, 那整個繪制圖表樣式為 2X3 的圖檔區域, 用坐标表示為

再當 plotNum = 3 時, 表示的坐标為(1, 3), 即第一行第三列的子圖

如果 numRows, numCols 和 plotNum 這三個數都小于 10 的話, 可以把它們縮寫為一個整數, 例如 subplot(323) 和 subplot(3,2,3) 是相同的。

subplot 在 plotNum 指定的區域中建立一個軸對象, 如果新建立的軸和之前建立的軸重疊的話,之前的軸将被删除。

例1:上述網格編号圖代碼如下

例4:

還可以表示為:

結果顯示:

網格圖1:

網格圖2:

是以正餘弦函數波形圖可以表示為:

最後圖形展示:

直方圖也稱條形圖,pyplot 子子產品提供 bar() 函數來生成條形圖,下面的執行個體是一個使用 <code>bar()</code> 函數生成的一個簡單的柱狀圖.

程式運作結果為:

Matplotlib 結合 NumPy 使用:

這時候需要用到 NumPy 中的直方統計函圖:histogram

<code>a</code> 是待統計資料的數組;

<code>bins</code>指定統計的區間個數;

<code>range</code>是一個長度為2的元組,表示統計範圍的最小值和最大值,預設值 <code>None</code>,表示範圍由資料的範圍決定

<code>weights</code>為數組的每個元素指定了權值,<code>histogram()</code>會對區間中數組所對應的權值進行求和

<code>density</code>為 <code>True</code> 時,傳回每個區間的機率密度;為 <code>False</code>,傳回每個區間中元素的個數

函數說明:

<code>numpy.histogram()</code> 函數是資料的頻率分布的圖形表示。 水準尺寸相等的矩形對應于類間隔,稱為 bin,變量 height 對應于頻率。

<code>numpy.histogram()</code> 函數将輸入數組和 bin 作為兩個參數。 bin 數組中的連續元素用作每個 bin 的邊界。

例如:

輸出結果為:

<code>plt()</code>函數使用:

Matplotlib 可以将直方圖的數字表示轉換為圖形。 pyplot 子子產品的 plt() 函數将包含資料和 bin 數組的數組作為參數,并轉換為直方圖,例如:

例1:一個簡單的曲線圖

畫出一個簡單的曲線圖,如下所示:

結果展示為:

例2:更新版的曲線圖

本章節是 Matplotlib 結合 NumPy 使用的畫圖方法,主要介紹了折線圖、正餘弦波形圖、方形圖、曲線圖的基本畫法,同時也詳細講述了子圖 <code>subplot</code>的基本使用方法,希望以上知識點能對學習這一子產品的夥伴們提供更好支撐,若有任何問題歡迎在交流群中進行交流 😃

https://www.runoob.com/numpy/numpy-matplotlib.html

https://www.runoob.com/w3cnote/matplotlib-tutorial.html

https://matplotlib.org/tutorials/introductory/usage.html#sphx-glr-tutorials-introductory-usage-py

文中示例代碼:python-100-days

關注公衆号:python技術,回複"python"一起學習交流

第92天:Python Matplotlib 進階操作

作者:純潔的微笑

出處:www.ityouknow.com

資源:微信搜【純潔的微笑】關注我,回複 【程式員】【面試】【架構師】有我準備的一線程式必備計算機書籍、大廠面試資料和免費電子書。 一共1024G的資料,希望可以幫助大家提升技術和能力。

本文如對您有幫助,還請多幫 【推薦】 下此文。

點我了解:Tooool-程式員一站式導航網站