《從零開始的資料科學筆記》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
留言分享你的想法!
avatar-img
Ethan的AI學習筆記
1會員
8內容數
我是一個不務正業的資料科學家,從零開始學習的路途上跌跌撞撞,跌過許多坑,也撞過許多牆... 當有人迷失方向時,希望這些筆記可以成為你的指南針。
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.official⁠ ♥️ ⁠
Thumbnail
沙龍一直是創作與交流的重要空間,這次 vocus 全面改版了沙龍介面,就是為了讓好內容被好好看見! 你可以自由編排你的沙龍首頁版位,新版手機介面也讓每位訪客都能更快找到感興趣的內容、成為你的支持者。 改版完成後可以在社群媒體分享新版面,並標記 @vocus.official⁠ ♥️ ⁠
Thumbnail
每年4月、5月都是最多稅要繳的月份,當然大部份的人都是有機會繳到「綜合所得稅」,只是相當相當多人還不知道,原來繳給政府的稅!可以透過一些有活動的銀行信用卡或電子支付來繳,從繳費中賺一點點小確幸!就是賺個1%~2%大家也是很開心的,因為你們把沒回饋變成有回饋,就是用卡的最高境界 所得稅線上申報
Thumbnail
每年4月、5月都是最多稅要繳的月份,當然大部份的人都是有機會繳到「綜合所得稅」,只是相當相當多人還不知道,原來繳給政府的稅!可以透過一些有活動的銀行信用卡或電子支付來繳,從繳費中賺一點點小確幸!就是賺個1%~2%大家也是很開心的,因為你們把沒回饋變成有回饋,就是用卡的最高境界 所得稅線上申報
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