top
Loading...
NumPy Matplotlib

NumPy Matplotlib

Matplotlib 是 Python 的繪圖庫。 它可與 NumPy 一起使用,提供了一種有傚的 MatLab 開源替代方案。 它也可以和圖形工具包一起使用,如 PyQt 和 wxPython。

Windows 系統安裝 Matplotlib

進入到 cmd 窗口下,執行以下命令:

python -m pip install -U pip setuptools
python -m pip install matplotlib

Linux 系統安裝 Matplotlib

可以使用 Linux 包管理器來安裝:

  • Debian / Ubuntu:

    sudo apt-get install python-matplotlib
  • Fedora / Redhat:

    sudo yum install python-matplotlib

Mac OSX 系統安裝 Matplotlib

Mac OSX 可以使用 pip 命令來安裝:

sudo python -mpip install matplotlib

安裝完後,你可以使用 python -m pip list 命令來查看是否安裝了 matplotlib 模塊。

$ python -m pip list | grep matplotlib
matplotlib (1.3.1)

實例

實例

import numpy as np from matplotlib import pyplot as plt x = np.arange(1,11) y = 2 * x + 5 plt.title("Matplotlib demo") plt.xlabel("x axis caption") plt.ylabel("y axis caption") plt.plot(x,y) plt.show()

以上實例中,np.arange() 函數創建 x 軸上的值。y 軸上的對應值存儲在另一個數組對象 y 中。 這些值使用 matplotlib 軟件包的 pyplot 子模塊的 plot() 函數繪製。

圖形由 show() 函數顯示。

圖形中文顯示

Matplotlib 默認情況不支持中文,我們可以使用以下簡單的方法來解決:

首先下載字體(注意系統):https://www.fontpalace.com/font-details/SimHei/

SimHei.ttf 文件放在當前執行的代碼文件中:

實例

import numpy as np from matplotlib import pyplot as plt import matplotlib # fname 為 你下載的字體庫路徑,注意 SimHei.ttf 字體的路徑 zhfont1 = matplotlib.font_manager.FontProperties(fname="SimHei.ttf") x = np.arange(1,11) y = 2 * x + 5 plt.title("教程 - 測試", fontproperties=zhfont1) # fontproperties 設置中文顯示,fontsize 設置字體大小 plt.xlabel("x 軸", fontproperties=zhfont1) plt.ylabel("y 軸", fontproperties=zhfont1) plt.plot(x,y) plt.show()

執行輸出結果如下圖:

此外,我們還可以使用系統的字體:

from matplotlib import pyplot as plt
import matplotlib
a=sorted([f.name for f in matplotlib.font_manager.fontManager.ttflist])
for i in a:
    print(i)

打印出你的 font_manager 的 ttflist 中所有注冊的名字,找一個看中文字體例如:STFangsong(仿宋),然後添加以下代碼即可:

plt.rcParams['font.family']=['STFangsong']

作為線性圖的替代,可以通過向 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' 白色

要顯示圓來代表點,而不是上面示例中的線,請使用 ob 作為 plot() 函數中的格式字符串。

實例

import numpy as np from matplotlib import pyplot as plt x = np.arange(1,11) y = 2 * x + 5 plt.title("Matplotlib demo") plt.xlabel("x axis caption") plt.ylabel("y axis caption") plt.plot(x,y,"ob") plt.show()

執行輸出結果如下圖:

繪製正弦波

以下實例使用 matplotlib 生成正弦波圖。

實例

import numpy as np import matplotlib.pyplot as plt # 計算正弦曲線上點的 x 和 y 坐標 x = np.arange(0, 3 * np.pi, 0.1) y = np.sin(x) plt.title("sine wave form") # 使用 matplotlib 來繪製點 plt.plot(x, y) plt.show()

執行輸出結果如下圖:

subplot()

subplot() 函數允許你在同一圖中繪製不同的東西。

以下實例繪製正弦和余弦值:

實例

import numpy as np import matplotlib.pyplot as plt # 計算正弦和余弦曲線上的點的 x 和 y 坐標 x = np.arange(0, 3 * np.pi, 0.1) y_sin = np.sin(x) y_cos = np.cos(x) # 建立 subplot 網格,高為 2,寬為 1 # 激活第一個 subplot plt.subplot(2, 1, 1) # 繪製第一個圖像 plt.plot(x, y_sin) plt.title('Sine') # 將第二個 subplot 激活,併繪製第二個圖像 plt.subplot(2, 1, 2) plt.plot(x, y_cos) plt.title('Cosine') # 展示圖像 plt.show()

執行輸出結果如下圖:

bar()

pyplot 子模塊提供 bar() 函數來生成條形圖。

以下實例生成兩組 x 和 y 數組的條形圖。

實例

from matplotlib import pyplot as plt x = [5,8,10] y = [12,16,6] x2 = [6,9,11] y2 = [6,15,7] plt.bar(x, y, align = 'center') plt.bar(x2, y2, color = 'g', align = 'center') plt.title('Bar graph') plt.ylabel('Y axis') plt.xlabel('X axis') plt.show()

執行輸出結果如下圖:

numpy.histogram()

numpy.histogram() 函數是數據的頻率分布的圖形表示。 水平尺寸相等的矩形對應於類間隔,稱為 bin,變量 height 對應於頻率。

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

實例

import numpy as np a = np.array([22,87,5,43,56,73,55,54,11,20,51,5,79,31,27]) np.histogram(a,bins = [0,20,40,60,80,100]) hist,bins = np.histogram(a,bins = [0,20,40,60,80,100]) print (hist) print (bins)

輸出結果為:

[3 4 5 2 1]
[  0  20  40  60  80 100]

plt()

Matplotlib 可以將直方圖的數字表示轉換為圖形。 pyplot 子模塊的 plt() 函數將包含數據和 bin 數組的數組作為參數,併轉換為直方圖。

實例

from matplotlib import pyplot as plt import numpy as np a = np.array([22,87,5,43,56,73,55,54,11,20,51,5,79,31,27]) plt.hist(a, bins = [0,20,40,60,80,100]) plt.title("histogram") plt.show()

執行輸出結果如下圖:

Matplotlib 更多參考內容:

北斗有巢氏 有巢氏北斗