《從零開始的資料科學筆記》Day#6: Matplotlib視覺化

更新 發佈閱讀 7 分鐘
raw-image

🔍什麼是Matplotlib?

Matplotlib 是 Python 最早也是最強大的 2D 資料視覺化套件,提供靈活且客製化程度高的繪圖介面。

  • 🌍 發展歷史悠久,幾乎所有可視化工具都以它為基礎(如 Seaborn、Pandas 內建繪圖、Plotly)
  • 🛠️ 採用物件導向設計,可精細控制每一個元素
  • 📊 支援靜態圖片輸出、互動式繪圖(搭配 Jupyter Notebook)
  • 🖼️ 能繪製:折線圖、長條圖、散點圖、直方圖、箱型圖、熱圖等

🧪視覺化套件比較

raw-image

🙋為什麼要學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()

raw-image

💡說明

折線圖可以用來看出趨勢,例如股票長期來說是上漲還是下跌?

🎯3. 長條圖 bar()

x = ['A', 'B', 'C']
y = [5, 7, 3]

plt.bar(x, y)
plt.title("Bar Chart")
plt.show()

raw-image

💡說明

長條圖可以用來比較不同群體在同一數值的高低,例如高三各班的英文段考及格人數。

🎯4. 散佈圖 scatter()

plt.scatter([1, 2, 3], [5, 6, 2])
plt.title("Scatter Plot")
plt.show()

raw-image

💡說明

散佈圖可以看出資料的變異程度,是集中還是分散。

🎯5. 直方圖 hist()

import numpy as np
data = np.random.randn(1000)

plt.hist(data, bins=20)
plt.title("Histogram")
plt.show()

raw-image

💡說明

直方圖可以畫出資料的分布,例如是否符合鐘形分配。


🎨進階繪圖與自訂技巧

✅ 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()

raw-image

💡說明

  • 使用子圖功能可以更好地控制多圖比較的任務

✅ 2. 圖表美化選項

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

raw-image

💡說明

實務上會在一張圖上同時畫出多條線來進行比較,這時就可以利用顏色、線和點的形狀來分辨。

  • 顏色設置為綠色
  • 畫線紋路設置為虛線
  • 點設置為實心圓

✅ 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, "中間標記")

raw-image

💡說明

  • 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', ...
  • ...
  • 自己查

📚 常見圖表與對應的使用情境

raw-image

說明

這裡列出常用圖表以及各自適合用在哪些情境上~ 大家會發現,長條圖、雙向長條圖以及直方圖非常相像,可能在應用上會造成混亂?

  • 長條圖 vs 直方圖
    • 長條圖用於離散型資料
    • 直方圖用於連續型資料也就是可以看出資料的機率分布(資料長相)

💡至於長條圖和雙向長條圖就留給各位自己去找答案吧!!!

留言
avatar-img
Ethan的AI學習筆記
8會員
33內容數
我是一個不務正業的資料科學家,從零開始學習的路途上跌跌撞撞,跌過許多坑,也撞過許多牆... 當有人迷失方向時,希望這些筆記可以成為你的指南針。
Ethan的AI學習筆記的其他內容
2025/06/14
🧪GroupBy能做什麼? groupby() 可將資料依照欄位分組,接著對每個群體套用統計或轉換函式,如同 SQL 中的 GROUP BY。 善用groupby()可以讓自己資料處理能力更上一層!!!
Thumbnail
2025/06/14
🧪GroupBy能做什麼? groupby() 可將資料依照欄位分組,接著對每個群體套用統計或轉換函式,如同 SQL 中的 GROUP BY。 善用groupby()可以讓自己資料處理能力更上一層!!!
Thumbnail
2025/06/09
🐼什麼是Pandas? Pandas 是 Python 最重要的資料處理與分析工具,名稱來自 "Panel Data"(跨時間的結構化資料),由 Wes McKinney 開發。 它提供兩個核心資料結構: Series:一維的資料列(類似 list) DataFrame:二維表格資料結構
Thumbnail
2025/06/09
🐼什麼是Pandas? Pandas 是 Python 最重要的資料處理與分析工具,名稱來自 "Panel Data"(跨時間的結構化資料),由 Wes McKinney 開發。 它提供兩個核心資料結構: Series:一維的資料列(類似 list) DataFrame:二維表格資料結構
Thumbnail
看更多
你可能也想看
Thumbnail
在 vocus 與你一起探索內容、發掘靈感的路上,我們又將啟動新的冒險——vocus App 正式推出! 現在起,你可以在 iOS App Store 下載全新上架的 vocus App。 無論是在通勤路上、日常空檔,或一天結束後的放鬆時刻,都能自在沈浸在內容宇宙中。
Thumbnail
在 vocus 與你一起探索內容、發掘靈感的路上,我們又將啟動新的冒險——vocus App 正式推出! 現在起,你可以在 iOS App Store 下載全新上架的 vocus App。 無論是在通勤路上、日常空檔,或一天結束後的放鬆時刻,都能自在沈浸在內容宇宙中。
Thumbnail
vocus 慶祝推出 App,舉辦 2026 全站慶。推出精選內容與數位商品折扣,訂單免費與紅包抽獎、新註冊會員專屬活動、Boba Boost 贊助抽紅包,以及全站徵文,並邀請你一起來回顧過去的一年, vocus 與創作者共同留下了哪些精彩創作。
Thumbnail
vocus 慶祝推出 App,舉辦 2026 全站慶。推出精選內容與數位商品折扣,訂單免費與紅包抽獎、新註冊會員專屬活動、Boba Boost 贊助抽紅包,以及全站徵文,並邀請你一起來回顧過去的一年, vocus 與創作者共同留下了哪些精彩創作。
Thumbnail
Python資料視覺化在數據分析中扮演關鍵角色,透過視覺化捕捉數據模式、趨勢和異常,透過Matplotlib等工具創建專業圖表變相對簡單和高效。
Thumbnail
Python資料視覺化在數據分析中扮演關鍵角色,透過視覺化捕捉數據模式、趨勢和異常,透過Matplotlib等工具創建專業圖表變相對簡單和高效。
Thumbnail
本文在介紹如何用Python繪製各點大小不同的散布圖及用箭頭標註特殊點
Thumbnail
本文在介紹如何用Python繪製各點大小不同的散布圖及用箭頭標註特殊點
Thumbnail
本文將介紹如何用Python繪製群組直條圖。
Thumbnail
本文將介紹如何用Python繪製群組直條圖。
Thumbnail
本文將介紹如何利用Python進行資料分析並繪製圓餅圖。
Thumbnail
本文將介紹如何利用Python進行資料分析並繪製圓餅圖。
Thumbnail
本文介紹如何用Python繪製散布圖與迴歸線
Thumbnail
本文介紹如何用Python繪製散布圖與迴歸線
Thumbnail
這篇文章介紹如何使用Python整理資料成百分比資料以及繪製百分比堆疊直條圖。
Thumbnail
這篇文章介紹如何使用Python整理資料成百分比資料以及繪製百分比堆疊直條圖。
Thumbnail
本文介紹了如何使用資料樞紐分析的功能來整理所需的資料,並設定圖表的中文字型,最後提供了繪圖的程式碼範例。
Thumbnail
本文介紹了如何使用資料樞紐分析的功能來整理所需的資料,並設定圖表的中文字型,最後提供了繪圖的程式碼範例。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News