
🔍什麼是Matplotlib?
Matplotlib 是 Python 最早也是最強大的 2D 資料視覺化套件,提供靈活且客製化程度高的繪圖介面。
- 🌍 發展歷史悠久,幾乎所有可視化工具都以它為基礎(如 Seaborn、Pandas 內建繪圖、Plotly)
- 🛠️ 採用物件導向設計,可精細控制每一個元素
- 📊 支援靜態圖片輸出、互動式繪圖(搭配 Jupyter Notebook)
- 🖼️ 能繪製:折線圖、長條圖、散點圖、直方圖、箱型圖、熱圖等
🧪視覺化套件比較

🙋為什麼要學Matplotlib?
- 資料視覺化有助於提升對於資料的理解力,也是最直觀的分析方法。
- 圖像跟文字、表格相比,更能清晰地呈現重要資訊!
- Matplotlib 是 Python 最基礎、最廣泛使用的2D 資料視覺化工具,是所有高階套件(如 Seaborn、Plotly)的基礎。
🖼️ 基礎視覺化
🔧 1. 基本語法架構
import matplotlib.pyplot as plt
plt.plot(x, y)
plt.title("圖表標題")
plt.xlabel("X軸")
plt.ylabel("Y軸")
plt.show()
🎯 2. 折線圖 plot()
x = [1, 2, 3]
y = [2, 4, 1]
plt.plot(x, y)
plt.title("Line Chart")
plt.show()

💡說明
折線圖可以用來看出趨勢,例如股票長期來說是上漲還是下跌?
🎯3. 長條圖 bar()
x = ['A', 'B', 'C']
y = [5, 7, 3]
plt.bar(x, y)
plt.title("Bar Chart")
plt.show()

💡說明
長條圖可以用來比較不同群體在同一數值的高低,例如高三各班的英文段考及格人數。
🎯4. 散佈圖 scatter()
plt.scatter([1, 2, 3], [5, 6, 2])
plt.title("Scatter Plot")
plt.show()

💡說明
散佈圖可以看出資料的變異程度,是集中還是分散。
🎯5. 直方圖 hist()
import numpy as np
data = np.random.randn(1000)
plt.hist(data, bins=20)
plt.title("Histogram")
plt.show()

💡說明
直方圖可以畫出資料的分布,例如是否符合鐘形分配。
🎨進階繪圖與自訂技巧
✅ 1. 子圖 (Subplot)
多張圖在同一視窗
plt.subplot(1, 2, 1)
plt.plot([1, 2, 3], [1, 4, 9])
plt.subplot(1, 2, 2)
plt.plot([1, 2, 3], [9, 4, 1])
plt.show()

💡說明
- 使用子圖功能可以更好地控制多圖比較的任務
✅ 2. 圖表美化選項

plt.plot([1, 2, 3], [4, 5, 6], color='green', linestyle='--', marker='o')

💡說明
實務上會在一張圖上同時畫出多條線來進行比較,這時就可以利用顏色、線和點的形狀來分辨。
- 顏色設置為綠色
- 畫線紋路設置為虛線
- 點設置為實心圓
✅ 3. 加入文字與圖例
x = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
y = [2, 4, 1, 3, 8, 7, 9, 4, 6, 1]
plt.plot(x, y, label='線條1')
plt.legend()
plt.text(2, 5, "中間標記")

💡說明
- plt.legend(): 功能為增加圖例
- 有助於多圖比較的情境
- 中文會有亂碼,建議改為英文
✅ 4. 儲存圖表
plt.savefig("chart.png", dpi=300, bbox_inches='tight')
💡說明
- plt.savefig(): 還有其他許多參數可以設定,有需要再查詢即可
✅ 5. 中文與字體設定(解決亂碼)
以第三個功能為例,使用中文常出現亂碼,若是要求只能用中文而不能改英文,則需進行調整。
plt.rcParams['font.family'] = 'Microsoft JhengHei' # 或 Noto Sans CJK
x = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
y = [2, 4, 1, 3, 8, 7, 9, 4, 6, 1]
plt.plot(x, y, label='線條1')
plt.legend()
plt.text(2, 5, "中間標記")
💡說明
- 調整方式為更改字體,但不一定有用
- 更改的方式取決於你的開發環境,只能多嘗試
- 因此實務上會建議盡量不要使用中文
📌 進一步建議:搭配 Pandas 使用更順手!
Pandas DataFrame 物件直接支援繪圖,透過 .plot() 搭配 kind= 參數可快速實現:
df['Sales'].plot(kind='bar')
df.plot(x='Day', y='Temperature', kind='line')
💡說明
Pandas和Matplotlib可以搭配使用,可以在處理資料時快速地產出想看的圖表,更詳細得用法可自行查閱!
- kind: 'bar', 'line', 'pie', 'hist', 'box', 'kde', ...
- color: 顏色設定
- label: 圖例文字標籤
- title: 圖表標題
- legend: 是否顯示圖例
- True/False
- grid: 是否顯示網格
- True/False
- style: 線條風格
- '--o', '-x', ...
- marker: 點的形狀
- 'o', 'x', ...
- ...
- 自己查
📚 常見圖表與對應的使用情境

說明
這裡列出常用圖表以及各自適合用在哪些情境上~ 大家會發現,長條圖、雙向長條圖以及直方圖非常相像,可能在應用上會造成混亂?
- 長條圖 vs 直方圖
- 長條圖用於離散型資料
- 直方圖用於連續型資料也就是可以看出資料的機率分布(資料長相)
💡至於長條圖和雙向長條圖就留給各位自己去找答案吧!!!