Python 資料視覺化:Matplotlib 與 Seaborn 繪圖實戰 (第 29 章)

站主自己的課程,請大家支持
揭秘站長的架站心法:如何利用 Hugo × AI 打造高質感個人品牌網站? 揭秘站長的架站心法:如何利用 Hugo × AI 打造高質感個人品牌網站?
  • Post by
  • Jan 12, 2024
post-thumb

在 Python 的視覺化世界裡,Matplotlib 是所有人的爸爸 (功能最強大,但語法較繁瑣),而 Seaborn 則是更懂審美的兒子 (語法簡潔,預設樣式美觀)。

在實務上,我們通常會「混用」這兩者:用 Seaborn 快速畫出統計圖,用 Matplotlib 微調細節。

1. Matplotlib 基礎

安裝: pip install matplotlib seaborn

import matplotlib.pyplot as plt
import numpy as np

# 產生資料
x = np.linspace(0, 10, 100)
y = np.sin(x)

# 畫圖
plt.figure(figsize=(10, 6)) # 設定畫布大小
plt.plot(x, y, label='Sine Wave', color='blue', linestyle='--')

# 裝飾
plt.title("My First Plot")
plt.xlabel("Time")
plt.ylabel("Amplitude")
plt.legend() # 顯示圖例
plt.grid(True) # 顯示格線

# 顯示
plt.show()

2. Seaborn:統計繪圖神器

Seaborn 能直接吃 Pandas DataFrame,並自動處理許多統計細節。

import seaborn as sns
import pandas as pd

# 載入內建的 Titanic 資料集
df = sns.load_dataset('titanic')

# 1. 長條圖 (Bar Plot):分析生還率 (survived) 與艙等 (class) 的關係
sns.barplot(data=df, x='class', y='survived')
plt.title("Survival Rate by Class")
plt.show()

# 2. 散佈圖 (Scatter Plot):不同年齡與票價的分佈
sns.scatterplot(data=df, x='age', y='fare', hue='survived')
plt.title("Age vs Fare")
plt.show()

3. 常見圖表類型

直方圖 (Histogram)

用來觀察資料的「分佈」情況 (例如年齡分佈)。

sns.histplot(data=df, x='age', kde=True, bins=30)
# kde=True 會畫出一條平滑的密度曲線

熱力圖 (Heatmap)

用來觀察變數之間的「相關性」。

# 計算相關係數矩陣 (只取數值欄位)
corr = df.corr(numeric_only=True)

sns.heatmap(corr, annot=True, cmap='coolwarm')
# annot=True 顯示數字
# cmap='coolwarm' 設定紅藍配色
plt.title("Correlation Matrix")

4. 儲存圖片

畫好的圖可以直接存檔,用於報告或論文。

plt.savefig("my_chart.png", dpi=300, bbox_inches='tight')
# dpi=300 解析度
# bbox_inches='tight' 裁切掉多餘的白邊

5. 總結

  • Matplotlib: 畫布的底層控制 (標題、軸標籤、存檔)。
  • Seaborn: 快速畫出漂亮且帶有統計意義的圖表 (長條圖、散佈圖、熱力圖)。

學會畫圖後,接下來我們要踏入更令人興奮的領域——讓 Python 擁有大腦,我們將學習如何串接 OpenAI API,讓你的程式具備 AI 能力!


延伸閱讀

LATEST POST
TAG