簡單的線條圖形 所有繪圖中最簡單的就是單一函數𝑦=𝑓(𝑥)的視覺化。 %matplotlib inline import matplotlib.pyplot as plt plt.style.use('seaborn-whitegrid') #plt.style.use('ggplot') import numpy as np # 圖表最簡單的形式 fig = plt.figure() ax = plt.axes() 在Matplotlib中,figure(是類別plt.Figure的執行實例)可以想成是一個單一的容器,它包含所有要表現的軸、圖形、文字以及標籤。 而axes(是類別plt.Axes的執行實例)則是上面所看到的:一個有邊界和刻度以及標籤的方框,它最終會包含畫上去的元素以建立出我們要的視覺內容。 在整本書中通常會使用fig去表示一個figure的實例,而ax則是一個或一組axes的實例。 一旦建立一個axes,就可以使用ax.plot函式繪出資料。讓我們從一個簡單的SIN函數開始: # SIN函數 fig = plt.figure() ax = plt.axes() x = np.linspace(0, 10, 1000) ax.plot(x, np.sin(x)); # 也可使用pylab介面(Matplotlib物件導向繪相簿的過程介面, ply)讓figure和axes在背景中建立 plt.plot(x, np.sin(x)); # 多線條,多個plot函式 plt.plot(x, np.sin(x)) plt.plot(x, np.cos(x)); 調整圖表:線條顏色和樣式 # 調整顏色 plt.plot(x, np.sin(x - 0), color='blue') # 使用名字來指定 plt.plot(x, np.sin(x - 1), color='g') # 使用顏色編碼(rgbcmyk) plt.plot(x, np.sin(x - 2), color='0.75') # 0到1之間的灰階 plt.plot(x, np.sin(x - 3), color='#FFDD44') # 16進位編碼(RRGGBB從00到FF) plt.plot(x, np.sin(x - 4), color=(1.0,0.2,0.3)) # RGB tuple, 值0到1 plt.plot(x, np.sin(x - 5), color='chartreuse'); # 所有在HTML中所支援的顏色名稱 若沒有任何顏色被指定,在多個線條下,Matplotlib會自動從一組預設的顏色中拿出來循環使用。 # 使用linestyle設定線條的樣式 plt.plot(x, x + 0, linestyle='solid') plt.plot(x, x + 1, linestyle='dashed') plt.plot(x, x + 2, linestyle='dashdot') plt.plot(x, x + 3, linestyle='dotted'); # 簡單的寫法 plt.plot(x, x + 4, linestyle='-') # solid plt.plot(x, x + 5, linestyle='--') # dashed plt.plot(x, x + 6, linestyle='-.') # dashdot plt.plot(x, x + 7, linestyle=':'); # dotted # 若喜歡極端簡潔的寫法,linestyple和color可被合併寫成單一個沒有關鍵字的參數送到plt.plt()函式中 plt.plot(x, x + 0, '-g') # solid green plt.plot(x, x + 1, '--c') # dashed cyan plt.plot(x, x + 2, '-.k') # dashdot black plt.plot(x, x + 3, ':r'); # dotted red 這些單字元的色彩碼反映了RGB(Red/Green/Blue)和CMYK(Cyan/Magenta/Yellow/blacK) 色彩系統的簡稱,這兩種色彩系統普遍的在數位彩色圖形中使用。 調整圖表: Axes範圍 調整axis範圍最直接的方始就是使用plt.xlim()和plt.ylim() plt.plot(x, np.sin(x)) plt.xlim(-1, 11) plt.ylim(-1.5, 1.5); # axis反向顯示 plt.plot(x, np.sin(x)) plt.xlim(10, 0) plt.ylim(1.2, -1.2); plt.axis()允許一次設定x和y的範圍,只要傳遞list即可,用來指定[xmin, xmax, ymin, ymax]即可 plt.plot(x, np.sin(x)) plt.axis([-1, 11, -1.5, 1.5]); plt.axis()還有更進階的功能: # 讓圖形自動變得更緊密一點 plt.plot(x, np.sin(x)) plt.axis('tight'); # 確保相同比例,讓x的單位=y的單位 plt.plot(x, np.sin(x)) plt.axis('equal'); 為圖表加上標籤 # 為圖表標上標籤、軸標籤 plt.plot(x, np.sin(x)) plt.title("A Sine Curve") plt.xlabel("x") plt.ylabel("sin(x)"); plt.plot(x, np.sin(x), '-g', label='sin(x)') plt.plot(x, np.cos(x), ':b', label='cos(x)') plt.axis('equal') plt.legend(); # 建立圖例