分析數據或是有需要做一些像是機器人的控制時,如果可以直接使用畫圖的方式來將數據的變化、成果顯示出來,會讓我們更加方便。在Python中我們有許多的繪圖的方式,這裡我舉matplotlib的方式來介紹。這次的介紹會以經常在控制機器人的時候會使用三角函數來當作例子,介紹繪圖的同時也介紹numpy三角函數相關的使用方式。
事前準備
在建立程式的環境中,我是使用Python3.8.5,這裡可以選擇你需要的python版本既可,使用的過程中可能會遇到一些差異,應該不會有太多改變的情況,如果有遇到其他例外的問題,還是建議可以查詢一下。
Anaconda
在安裝python 的環境時,我是透過Anaconda來建立虛擬環境做管理。可以參考以下文章在Windows中安裝Anaconda。
Matplotlib
確認環境中是否已經有安裝好matplotlib,如果沒有的話可以參考matplotlab[4]的教學來安裝。如果你是使用Anaconda虛擬環境,可以參考[1]Anaconda這篇文章的教學,使用文章下方的其中一個指令來安裝,如:
conda install -c conda-forge matplotlib
Numpy
Python中有需要計算時,經常我們會需要使用到Numpy,在本篇文章中,因為我們需要使用到三角函數的運算,因此會需要先確保程式的環境中有安裝Numpy,這裡我使用的是1.20.1版本的Numpy。尚未安裝的話,可以參考Numpy的安裝教學[2],如果你是使用Anaconda,安裝的方式可以參考[3]的方式,使用以下指令安裝新版本的Numpy:
conda install -c anaconda numpy
新嘗試
確認好環境後,我們就可以來練習使用Python畫圖。因為在進行工程相關的計算時,會經常使用到三角函數的運算,因此這次的題目我們也將會繪製三角函數來作為練習的條件之一。
題目
我們要使用python繪製三角函數Sin, Cos, Tan三種的圖形,會以-π到 π的角度變化,並且設定振幅為1。
實作
設定需要讀取的函式庫資料
Numpy 建立三角函數
使用Numpy 時,可以直接使用以下的條件來計算:
- Numpy.sin()
- Numpy.cos()
- Numpy.tan()
上面三個函數都是以徑度作為輸入,Numpy有提供Numpy.pi來提供徑度的相關計算。
建立輸入值的陣列
因為繪製圖形時其實是將每一次的角度帶入運算後的結果全部列出來,因此才會獲得如同連續般的結果, 所以在一開始,我們會需要先建立一個陣列來指定我們在各個取樣時間點的角度輸入值。
在Numpy中,也提供一個指令可以快速的協助我們建立這個輸入角度的陣列:
Numpy.linspace( 啟始數字,結束數字,分布數量 )
我們可以將起始數字訂為 -π (-pi), 結束數字訂為π (pi) , 分布數量定為100。
繪圖
matplotlab有提供繪圖時的函數[4],這裡因為我們只是要將函數的變化過程畫出來,因此這裡我們會用到的主要函數是:
- plot(): 設定輸入(X軸)與輸出(Y軸)結果
- xlabel(): 設定X軸名稱
- ylabel(): 設定Y軸名稱
- show(): 顯示繪圖結果
建立程式
結論
成功繪製出圖形後,就已經可以進行基本的繪圖。如果有其他繪圖的需求,可以查詢matplotlib的其他繪圖函數[4],或是也可以使用如Plotly[5]等等,其他python 的繪圖函示庫來達到繪圖效果。
參考資料
[1] Anaconda 安裝matplotlab
[2] Numpy 安裝教學
[3] Anaconda 安裝Numpy
[4] matplotlib
[5] plotly