如何繪製線條
matplotlib.pyplot模組可使用plot()方法進行繪製線條,接著再呼叫show()方法來顯示繪圖結果,plot()方法語法如下:
plt.plot(x座標串列, y座標串列, [參數1, 參數2, …])plot()方法除了x座標串列和y座標串列為必要參數之外,還有下表五個常用的選擇性參數可以使用。
| plot 方法參數 | 說明 |
|---|---|
| color | 設定線條的顏色,預設值為藍色。 |
| linewidth 或 lw | 設定線條的寬度,預設值為 1.0。 |
| linestyle 或 ls | 設定線條的顯示樣式,常用的設定值有「-」實線、「--」虛線、「-.」虛點線、「:」點線,預設值為「-」實線。 |
| label | 設定圖例代表的名稱。此屬性必須執行 legend() 方法才會顯示指定的圖例名稱。 |
| marker | 設定線條端點的標記樣式。常用屬性值如下: 1. ".", "o", "*":依序代表點、圓、星樣式。2. "v", "^":依序代表正倒三角形。3. "<", ">":依序代表左右三角形。4. "s":矩形。5. "p":五角形。6. "h", "H":依序代表小六邊形與大六邊形。7. "d", "D":依序代表小鑽石形與大鑽石形。8. "+"、"x":依序代表 + 與 X。![]() |
| markersize 或 ms | 設定線條端點的標記大小。 |
[簡例] (檔名:plt01.py)
練習使用 matplotlib.pyplot模組的 plot()方法製 2016年~2022年的產品銷售量
圖表,指定圖例說明如下:
listX座標串列由2016年〜2022年。listY座標串列由0〜100000。- 設定線條顏色為藍色、以虛點線顯示、線條寬度為
4,線條代表圖例名稱為 Sales volume
[結果]

程式碼:
plt01.pyimport matplotlib.pyplot as plt listX = [2016, 2022] listY = [0, 100000] plt.plot(listX, listY, color='blue', ls='-.', lw=4, label="Sales volume") plt.legend() plt.show()
說明
- 第
3,4行:listX與listY座標串列只設定兩個資料,但圖表座標間距會自動分配。- 第
6行: 使用plot()方法進行繪製線條,依據listX與listY的數值,並指定線條顏色為藍色、線條以虛點線顯示、線條寬度為4,線條代表圖例名稱為「Sales volume」。- 第
7行:執行legend()方法,才能顯示label所指定的線條代表圖例名稱 Sales volume- 第
8行:執行show()方法顯示繪圖結果。
IPython Console 無法顯示圖表的解決方式
當執行繪製圖表程式時,若出現下圖虛框處訊息且未出現圖表,這是因為Spyder預設的IPython Console視窗(主控台)不會顯示圖表。

要讓IPython Console視窗(主控台)顯示圖表操作步驟如下:
-
Step1 開啟
Plots視窗
執行功能表的【Window/Panes/Plots】項目開啟Plots視窗。(讓Plots項目前有勾選表示已開啟該視窗。)

-
Step2 取消
Mute inline plotting功能
接著切換到Plots視窗,並按下該視窗功能表並取消「Mute inline plotting」功能,最後再執行程式即可在IPython Console視窗顯示圖表。

如何在圖表中顯示中文
matplotlib預設無法在圖表中顯示中文,當在上例圖例說明指定「歷年銷售量」,結果會如下圖虛框處無法顯示中文:

若要解決中文顯示的問題,只要在程式碼開頭撰寫如下敘述,將圖表預設使用的字體換成標楷體(字型的英文名DFKai-SB)即可:
font = {'family' : 'DFKai-SB'}
plt.rc('font', **font) # pass in the font dict as kwargs[簡例] 延續上例將線條的圖例說明改成「歷年銷售量」,並可正常顯示中文。 (檔名:plt02.py)
[結果]

程式碼:
plt02.pyimport matplotlib.pyplot as plt # 建立font字體物件,DFKai-SB表示指定字體為標楷體 font = {'family' : 'DFKai-SB'} # 指定plt繪製圖表的字體物件為font,因為圖表的字體會以標楷體呈 plt.rc('font', **font) # pass in the font dict as kwargs listX = [2016, 2022] listY = [0, 100000] plt.plot(listX, listY, color='blue', ls='-.', lw=4, label="歷年銷售量") plt.legend() plt.show()
在
Plots視窗右邊會出現繪製圖表的縮圖,在縮圖上按一下可以切換顯示的圖表,按右鍵會出現快顯功能表,可以執行指令來管理圖表。
如何設定圖表標題、座標標題與座標範圍
圖表另外還提供下表的方法讓開發人員可以設定圖表標題、座標標題與座標範圍等,讓瀏覽者可能瞭解圖表所代表的意義。
| matplotlib.pyplot 模組方法 | 說明 |
|---|---|
| title | 設定圖表標題。 |
| xlabel | 設定 x 座標標題。 |
| ylabel | 設定 y 座標標題。 |
| xlim | 設定 x 座標範圍。寫法:plt.xlim(起始值, 終止值) |
| ylim | 設定 y 座標範圍。寫法:plt.ylim(起始值, 終止值) |
| grid(True) | 設定是否顯示網格線,預設不顯示網路線。 顯示網格線寫法:plt.grid(True) 不顯示網格線寫法:plt.grid(False) |
[簡例] 繪製 2017~2022年的 iPhone 歷年銷售量的圖表。圖表X座標(年)範圍 2016~2023年,Y座標(銷售量)範圍0~110000,線條端點樣式設為*,指定圖表標題為「手機歷年銷售量」。 (檔名:plt03.py)
[結果]

程式碼:
plt03.pyimport matplotlib.pyplot as plt font = {'family' : 'DFKai-SB', 'size':'13'} plt.rc('font', **font) listX = [2017, 2018, 2019, 2020, 2021, 2022] listY = [43000, 31000, 70500, 68000, 85000, 24000] plt.plot(listX, listY, color='blue', ls='--', lw=1, marker='*', label="iPhone歷年銷售量") plt.title("手機歷年銷售量") plt.xlim(2016, 2023) plt.ylim(0, 110000) plt.xlabel('年度') plt.ylabel('銷售量') plt.legend() plt.show()
[簡例] (檔名:plt04.py)
繪製2017~2022年手機的歷年銷售量圖表,產品有iPhone、ASUS、Google;線條模式依序設為虛線(—)、虛點線(-.)與實線(-);線條顏色依序指定為藍、紅、綠;線端點樣式依序為圓、星、矩形。圖表X座標(年)範圍 2016-2023年,Y座標(銷售量)範圍0~110000,指定圖表標題為「手機歷年銷售量」。
[結果]

程式碼:
plt04.pyimport matplotlib.pyplot as plt font = {'family' : 'DFKai-SB'} plt.rc('font', **font) listIYearX = [2017, 2018, 2019, 2020, 2021, 2022] listIPhoneY = [43000, 31000, 70500, 68000, 85000, 24000] plt.plot(listIYearX, listIPhoneY, color='blue', ls='-', lw=2, marker="o",ms=10, label="iPhone") listAsusY = [23000, 36000, 40500, 58000, 65000, 44000] plt.plot(listIYearX, listAsusY, color='red', ls='-.', lw=2, marker="*",ms=10, label="ASUS") listGoogleY = [13000, 26000, 50500, 68000, 75000, 54000] plt.plot(listIYearX, listGoogleY, color='green', ls='-', lw=2, marker="s",ms=10, label="Google") plt.title("手機歷年銷售量") plt.xlim(2016, 2023) plt.ylim(0, 110000) plt.xlabel('年度') plt.ylabel('銷售量') plt.legend() plt.show()
說明
- 第
5行:指定listIYearX串列當做2017~2022年。- 第
6~7行:畫iPhone手機歷年銷售量的線條。- 第
9-10行:畫ASUS手機歷年銷售量的線條圖。- 第
12~13行:畫
相關主題與延伸閱讀
- 1. matplotlib 套件:複習
matplotlib套件的安裝與匯入方式。 - 3. 繪製柱狀圖:同樣使用座標串列繪圖,可比較
plot()與bar()方法的差異。 - 4. 繪製圓餅圖:延伸學習另一種常見的圖表呈現方式。
- 1. 何謂串列:繪圖所需的 x、y 座標資料,通常都是以串列的方式儲存。

