前言
寫程式跑出一堆數字之後,下一步常常是「把它畫成圖」。一張折線圖勝過一整欄的數據,而 Python 最經典的繪圖工具就是 matplotlib。
這篇我們用一個貫穿全文的情境來學:你在幫一家手搖飲料店整理上半年的營運數據。從安裝開始,一步一步把這些數字畫成看得懂的圖,最後解決一個幾乎每個台灣使用者都會踩到的坑:中文標題變成一格一格的方框(口口口)。假設你已經會 Python 的基本語法(變數、串列 list、print),其他的我們邊做邊講。
安裝 matplotlib
matplotlib 沒有內建在 Python 裡,要先用 pip 安裝。打開終端機(命令提示字元 / PowerShell / Terminal 都可以),輸入:
pip install matplotlib寫這篇時的最新穩定版是 3.11.0(2026 年 6 月釋出),需要 Python 3.11 以上。裝好之後,可以在 Python 裡確認一下版本:
import matplotlib
print(matplotlib.__version__) # 3.11.0只要沒有跳紅字,就代表安裝成功,可以開始畫圖了。
畫出第一張折線圖
先把店裡上半年(1 到 6 月)的營業額(單位:萬元)記成兩個串列,一個放月份、一個放對應的業績。matplotlib 最常用的介面叫做 pyplot,習慣上會把它簡寫成 plt:
import matplotlib.pyplot as plt
month = [1, 2, 3, 4, 5, 6]
sales = [42, 55, 51, 68, 82, 95]
plt.plot(month, sales)
plt.show()執行後會跳出一個視窗,裡面是一條有高有低、整體往上爬的折線——這就是這家店上半年的業績走勢,3 月小掉了一下,之後一路衝上來。這裡做的事情很單純:
plt.plot(month, sales):把 、 兩個串列的數字,一組一組配成座標點 、…再用線連起來。
加上圖表元素:標題與座標軸說明
現在這張圖有個問題:光看線條,別人根本不知道它在講什麼——這是月份還是日期?縱軸是萬元還是杯數?一張看得懂的圖,至少要有標題和座標軸說明。加三行就好:
import matplotlib.pyplot as plt
month = [1, 2, 3, 4, 5, 6]
sales = [42, 55, 51, 68, 82, 95]
plt.plot(month, sales)
plt.title("Sales Growth") # 圖表標題
plt.xlabel("Month") # x 軸說明
plt.ylabel("Sales") # y 軸說明
plt.show()多條線與圖例(legend)
一張圖常常不只一條線。這家店主打兩種茶——冰茶和熱茶,我們把兩者上半年的銷量畫在一起比一比。想多畫一條線,只要多呼叫一次 plt.plot() 就好。但這時候會有新問題:兩條線都畫出來了,怎麼知道哪條是哪條?答案是圖例(legend)。
作法分兩步:畫線時用 label 幫每條線取名字,最後再呼叫一次 plt.legend() 把名字顯示出來:
import matplotlib.pyplot as plt
month = [1, 2, 3, 4, 5, 6]
iced_tea = [20, 30, 45, 62, 80, 95]
hot_tea = [88, 75, 60, 42, 30, 22]
plt.plot(month, iced_tea, label="Iced Tea")
plt.plot(month, hot_tea, label="Hot Tea")
plt.title("Iced vs Hot Tea")
plt.xlabel("Month")
plt.ylabel("Cups")
plt.legend() # 顯示圖例,內容來自上面每條線的 label
plt.show()換個圖表類型:長條圖與散佈圖
折線圖適合看「趨勢」,但資料的樣子百百種。matplotlib 換圖表類型很簡單,多半只是把 plot 換成別的函式,其他寫法幾乎一樣。
想比較各品項賣了幾杯,用長條圖 plt.bar():
import matplotlib.pyplot as plt
drinks = ["Bubble Tea", "Latte", "Green Tea", "Americano", "Juice"]
cups = [86, 64, 43, 58, 31]
plt.bar(drinks, cups)
plt.title("Drink Popularity")
plt.ylabel("Cups Sold")
plt.show()解決中文變方框、負號變框框
到目前為止,我們的標題都是英文。現在把第一張營業額折線圖的標題換成中文試試:
import matplotlib.pyplot as plt
month = [1, 2, 3, 4, 5, 6]
sales = [42, 55, 51, 68, 82, 95]
plt.plot(month, sales)
plt.title("每月營業額")
plt.xlabel("月份")
plt.show()
小結
這篇用一家飲料店的上半年數據,走完了 matplotlib 的入門路線:
- 用
pip install matplotlib安裝,plt.plot()+plt.show()畫出第一張營業額折線圖。 - 用
title/xlabel/ylabel/legend幫圖表加上看得懂的說明,而且這套配件在折線圖、長條圖、散佈圖都通用。 - 折線看趨勢、長條比多寡、散佈看相關,同一批數字換個圖就換個角度。
- 用
plt.rcParams['font.sans-serif']換中文字型解決方框問題,再用plt.rcParams['axes.unicode_minus'] = False順手修好負號。
「中文變方框」幾乎是每個人的第一道關卡,把上面那兩行設定記下來,之後每次畫含中文的圖,開頭貼上去就一勞永逸了。





