1. 程式人生 > 實用技巧 >使用Python繪製各種優美簡單曲線

使用Python繪製各種優美簡單曲線

matplotlib是著名的Python繪相簿,它提供了一整套繪圖API,十分適合互動式繪圖。,解決資料分析和視覺化問題,其實也是Python的拿手好戲。另外,在資料處理過程中會用到numpy。

例如,畫出指定區間的一個多項式函式:

import numpy as np
import matplotlib.pyplot as plt
X = np.linspace(-4, 4, 1024)
Y = .25 * (X + 4.) * (X + 1.) * (X - 2.)
plt.title('$f(x)=\\frac{1}{4}(x+4)(x+1)(x-2)$')
plt.plot(X, Y, c = 'g')
plt.show()

通過numpy的linspace方法來確定橫座標x的取值範圍,列出方程,然後呼叫matplotlib的pyplot畫出函式曲線即可。numpy 是一個用python實現的科學計算包,包括一個強大的N維陣列物件Array和成熟的函式庫,有用於整合C/C++和Fortran程式碼的工具包,提供了實用的線性代數、傅立葉變換和隨機數生成函式等工具,可以理解成Matlab。

記得中學的時候,我問老師三角函式到底有啥用?(無知者無畏)老師反問我,“如果給了你一塊洋鐵,怎樣才能剪出煤爐煙囪的拐彎呢?”,現在仍然記得老師的這個例子,哪些看似抽象的數學公式,實際上是自己不知道她們的應用場景而已。

import numpy as np
import matplotlib.pyplot as plt
X = np.linspace(0, 2 * np.pi, 100)
YSinValues = np.sin(X)
YCosValues = np.cos(X)
plt.plot(X, YSinValues)
plt.plot(X, YCosValues)
plt.show()

Matplotlib 是一個 Python 的 2D繪相簿,甚至可以生成出版質量級別的圖形。

對於那些正態分佈而言,Python 畫起來也就相當簡單了:

import numpy as np
import matplotlib.pyplot as plt
def pdf(X, mu, sigma):
   a = 1. / (sigma * np.sqrt(2. * np.pi))
   b = -1. / (2. * sigma ** 2)
   return a * np.exp(b * (X - mu) ** 2)
X = np.linspace(-6, 6, 1000)
for i in range(3):
   samples = np.random.standard_normal(10)
   mu, sigma = np.mean(samples), np.std(samples)
   plt.plot(X, pdf(X, mu, sigma), color = '.66')
plt.plot(X, pdf(X, 0., 1.), color = 'b')
plt.show()

為了不顯得單調,這裡多畫了幾條曲線。只要算出方差和均值,從excel中讀出哪些數值就可以擬合正態分佈了。

import numpy as np
import matplotlib.pyplot as plt
a = 1
t = np.linspace(0 , 2 * np.pi, 1024)
X = a*(2*np.cos(t)-np.cos(2*t))
Y = a*(2*np.sin(t)-np.sin(2*t))
plt.plot(Y, X,color='r')
plt.show()

代表愛心的心形線來了: