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'
倒三角标記
'^'
正三角标記
'<'
左三角标記
'>'
右三角标記
'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"一起學習交流

作者:純潔的微笑
出處:www.ityouknow.com
資源:微信搜【純潔的微笑】關注我,回複 【程式員】【面試】【架構師】有我準備的一線程式必備計算機書籍、大廠面試資料和免費電子書。 一共1024G的資料,希望可以幫助大家提升技術和能力。
本文如對您有幫助,還請多幫 【推薦】 下此文。
點我了解:Tooool-程式員一站式導航網站