Matplotlib基礎

      在〈Matplotlib基礎〉中尚無留言

matplotlib

plot[plɑt] : 陰謀

matplotlib是Python著名的繪圖庫, 包含了類似matlab一整套的繪圖api. pylab則為matplotlib裏的一個子項目. 所以要使用pylab的話, 需先安裝matplotlib

下面就三行, 使用 plt.legend()產生一個 “傳奇” 的物件, 然後show()出來, 就可以出現如下的空殼統計圖表外框了. 而且還具有放大縮小移動的功能, 真的是有夠傳奇的.

import pylab as plt
plt.legend()
plt.show()

plt.legend()其實一點也不傳奇, 因為只要使用 plt.plot(x, y) 把二個list的值傳進去, plt.show()就會顯示出來. 但如果連x, y的值都沒有, 那就用 legend()來代替

matplotlib

numpy

numpy是常用的套件. 在Windows下直接下達 pip install numpy即可, 但在ubuntu下, pip安裝有bug無法使用, 請使用如下指令安裝

sudo pip3 uninstall numpy
sudo apt install python3-numpy

等差數列

任何相鄰兩項的差相等,該差值稱為公差 (數學)。例如數列:3, 5, 7, 9, 11, 13,… 就是一個等差數列. 在這個數列中, 從第二項起, 每項與其前一項之差都等於2, 即公差為2.

numpy.linspace

linspace 全文為 linear space, 線性分割的意思

numpy.linspace(x, y, n) : 在x 及y 之間, 產生n-2 個數. 也就是說, 包含頭尾的 x 及 y, 再加上中間的數字, 總共n 個. 每個數都是等差級數. 所以總共有 (n-1) 個間隔, 每個間隔的大小(公差)為 (y-x)/(n-1)

numpy.linspace(1,9,5)

上面代碼, 產生 1~9 之間共5 個數, 所以有四個間隔, 每個間隔大小為 (9-1)/(5-1)=2, 所以就會產生 1, 3, 5, 7, 9 共五個數

numpy.linspace(0,1,10)

共9個間隔, 每個間隔為 1/9=0.11111111, 所以結果為

[0. 0.11111111 0.22222222 0.33333333 0.44444444 0.55555556
0.66666667 0.77777778 0.88888889 1. ]

numpy.random.random(n)

產生10個亂數list, 每個亂數的值為 0<=rand <1

a=numpy.random.random(10)
print (a)
結果 : 
[0.0120728 0.53486766 0.94797098 0.64184738 0.57318404 0.32338013
 0.41668946 0.9873259 0.73820014 0.33671621]
a=np.random.random(10)*10
print (a)
結果是這10個數字, 全都乘上10

繪製直線

如下代碼, 使用一階方程式 y=ax+b繪製圖形, a為線條斜率, b為偏移量, x值由0變化到10

import pylab as plt
import numpy as np
x=np.linspace(0,10,10)
value=x*3/10+5#一階方程式, 斜率為 3/10
plt.figure(figsize=(6,6))#設定圖形大小
plt.xlim(-5,15)#設定x軸的範圍
plt.ylim(0,20)#設定y軸的範圍
plt.plot(x,value)
plt.show()

line

繪製圓型

底下plt.plot()只指定x, y的值, 沒其他設定, 就會由第一點到第二點繪制直線, 但因為太密集了, 所以看起來就是圓型圖

import pylab as plt
import numpy as np
n=360
angle=np.linspace(0,n,n) #切成360等份
x_axis=n*np.cos(np.pi*angle/180) #x座標
y_axis=n*np.sin(np.pi*angle/180) #y座標
plt.figure(figsize=(6,6)) #設定長寬大小
plt.plot(x_axis, y_axis)
plt.show()

plot_circle

正弦波

正弦波是指隨著時間的增加, 其振輻(y軸)的值會呈現水波的形狀上下起伏.  不論是動能, 光能, 電磁波, 皆以正弦波的波形傳遞出去.

其公式為 y=A*sin(k*pi*t), A為振輻, k為波數,且必需為偶數。

請注意t的安排,如果 t=np.linspace(0,1200,400),總長度為 1200-0=1200,此值必需是區段數 400 的倍數。這表示每 400 長度為一個周期(圓轉一圈),在1200個長度中,共轉了三圈(三個周期)。如果此時 k 為 2 ,則表示每400個長度有 2 個波峰,1200個長度就有 2 * 3 = 6 個波峰。

如下代碼, 說明在0-100秒內, 出現10個波峰, 振輻為20的圖形

import pylab as plt
import numpy as np
n=1000
x_axis=np.linspace(0,n,n)
y_axis=20*np.sin(10*np.pi*x_axis)
plt.plot(x_axis, y_axis)
plt.show()

sin

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *