# 【Python 筆記】Matplotlib Pyplot 套件應用(下) [TOC] 感謝您點進本篇文章,我是 LukeTseng,該系列主要以筆記加上口語白話形式學習 Python,若文章某處有誤敬請告知,非常感謝。 ## 繪製長條圖以及橫條圖 - `plt.bar()`:繪製長條圖。 - `plt.barh()`:繪製橫條圖。其中 h 是 horizontal 的意思。 `plt.bar()` 的語法如下: ```python plt.bar(x, height, width=0.8, bottom=None, align='center', color=None, edgecolor=None, linewidth=None, label=None, alpha=None) ``` * `x`: x 軸的座標位置(可以是數字或類別) * `height`: 長條的高度(數值大小) * `width`: 長條的寬度,預設為 0.8(範圍 0~1) * `bottom`: 長條的起始位置,預設為 0(y 軸起始座標) * `align`: 對齊方式,'center'(中心對齊)或 'edge'(邊緣對齊) * `color`: 長條的顏色 * `edgecolor`: 邊框顏色 * `linewidth`: 邊框線寬 * `label`: 圖例標籤 * `alpha`: 透明度(0~1) `plt.barh()` 的語法如下: ```python plt.barh(y, width, height=0.8, left=None, align='center', color=None, edgecolor=None, linewidth=None, label=None, alpha=None) ``` 參數基本上跟 `plt.bar()` 相同,就不講了,重點是參數基本上就是 `plt.bar()` 跟它對調而已,x 變成 y,width 變成 height 等等。 範例 1:繪製簡單長條圖。(數據僅供參考,教學展示用) ```python= import matplotlib.pyplot as plt import numpy as np plt.rcParams['font.sans-serif'] = ['DFKai-sb'] plt.rcParams['axes.unicode_minus'] = False # 資料準備 cities = ['台北', '台中', '台南', '高雄', '新竹'] population = [260, 280, 188, 277, 450] x = np.arange(len(cities)) # 繪製長條圖 plt.bar(x, population, width=0.6, color='steelblue', edgecolor='black', linewidth=1.5) # 設定標籤 plt.xlabel('城市') plt.ylabel('人口密度(萬)') plt.title('各城市人口密度比較') plt.xticks(x, cities) plt.show() ``` Output: ![image](https://hackmd.io/_uploads/SJAcuxtCxg.png) 範例 2:繪製簡單橫條圖。 ```python= import matplotlib.pyplot as plt import numpy as np # 資料準備 subjects = ['國文', '英文', '數學', '自然', '社會'] scores = [85, 92, 78, 88, 90] y = np.arange(len(subjects)) # 繪製水平長條圖 plt.barh(y, scores, height=0.5, color='coral', alpha=0.8) # 設定標籤 plt.xlabel('分數') plt.ylabel('科目') plt.title('各科成績表現') plt.yticks(y, subjects) plt.show() ``` Output: ![image](https://hackmd.io/_uploads/HkY2OetAeg.png) 範例 3:並列長條圖(比較兩組資料)。 ```python= import matplotlib.pyplot as plt import numpy as np # 資料準備 categories = ['Q1', 'Q2', 'Q3', 'Q4'] sales_2023 = [120, 150, 180, 200] sales_2024 = [140, 160, 190, 220] x = np.arange(len(categories)) bar_width = 0.35 # 繪製兩組長條 plt.bar(x - bar_width/2, sales_2023, bar_width, label='2023年', color='skyblue') plt.bar(x + bar_width/2, sales_2024, bar_width, label='2024年', color='orange') # 設定標籤和圖例 plt.xlabel('季度') plt.ylabel('銷售額(萬元)') plt.title('2023 vs 2024 季度銷售比較') plt.xticks(x, categories) plt.legend() plt.show() ``` Output: ![image](https://hackmd.io/_uploads/Hy31KxFRee.png) 並列長條圖透過調整 x 座標位置(`x - bar_width/2` 和 `x + bar_width/2`)來讓兩組資料並排顯示。 範例 4:堆疊長條圖。 ```python= import matplotlib.pyplot as plt import numpy as np # 資料準備 months = ['1月', '2月', '3月', '4月'] online_sales = [50, 60, 70, 80] offline_sales = [30, 35, 40, 45] x = np.arange(len(months)) # 繪製堆疊長條圖 plt.bar(x, online_sales, label='線上銷售', color='#3498db') plt.bar(x, offline_sales, bottom=online_sales, label='實體銷售', color='#e74c3c') # 設定標籤和圖例 plt.xlabel('月份') plt.ylabel('銷售額(萬元)') plt.title('線上與實體銷售堆疊圖') plt.xticks(x, months) plt.legend() plt.show() ``` Output: ![image](https://hackmd.io/_uploads/Sy4tYlt0xe.png) 範例 5:新增資料標籤在長條圖頂端。 ```python= import matplotlib.pyplot as plt import numpy as np # 資料準備 products = ['筆電', '手機', '平板', '耳機'] quantities = [45, 78, 52, 65] x = np.arange(len(products)) # 繪製長條圖 bars = plt.bar(x, quantities, color=['#FF6B6B', '#4ECDC4', '#45B7D1', '#FFA07A'], edgecolor='black', linewidth=2) # 新增資料標籤 for i, (xi, yi) in enumerate(zip(x, quantities)): plt.text(xi, yi + 2, str(yi), ha='center', va='bottom', fontsize=12, fontweight='bold') # 設定標籤 plt.xlabel('產品類別') plt.ylabel('銷售數量') plt.title('各產品銷售數量統計') plt.xticks(x, products) plt.ylim(0, max(quantities) + 15) plt.show() ``` Output: ![image](https://hackmd.io/_uploads/S14CYgFRgg.png) ## 繪製圓餅圖 要繪製圓餅圖,則使用 `plt.pie()` 函式來進行繪製,以下是他的語法: ```python plt.pie(x, explode=None, labels=None, colors=None, autopct=None, pctdistance=0.6, shadow=False, labeldistance=1.1, startangle=0, radius=1, counterclock=True, wedgeprops=None, textprops=None, center=(0, 0), frame=False, rotatelabels=False, normalize=True) ``` 基本參數: * `x`:一維陣列,表示每個扇形的數值大小(必填參數)。 * `labels`:字串列表,為每個扇形提供標籤。 * `colors`:顏色序列,指定每個扇形的顏色。 * `autopct`:字串或函數,在扇形內顯示百分比(如 `'%1.1f%%'`)。 * `explode`:陣列,指定每個扇形與圓心的偏移距離。 位置與樣式參數: * `pctdistance`:百分比文字距離圓心的比例(預設 `0.6`)。 * `labeldistance`:標籤距離圓心的比例(預設 `1.1`)。 * `startangle`:起始角度,逆時針從 `x` 軸開始旋轉(預設 `0`)。 * `shadow`:布林值,是否顯示陰影效果。 * `radius`:圓餅圖的半徑大小(預設 `1`)。 進階參數: * `wedgeprops`:字典,設定扇形屬性(如邊框寬度、顏色)。 * `textprops`:字典,設定文字屬性(如字體大小、顏色)。 * `counterclock`:布林值,是否逆時針排列(預設 True)。 * `rotatelabels`:布林值,是否旋轉標籤以配合扇形角度。 只能說參數真他媽多,不過來看範例 1: ```python= import matplotlib.pyplot as plt # 資料準備 subjects = ['國文', '英文', '數學', '社會', '自然'] scores = [85, 92, 78, 88, 95] # 繪製圓餅圖 plt.pie(scores, labels=subjects) plt.title('各科成績分布') plt.show() ``` Output: ![image](https://hackmd.io/_uploads/Sy-1SfKCgx.png) 範例 2:顯示百分比。 ```python= import matplotlib.pyplot as plt # 資料準備 subjects = ['國文', '英文', '數學', '社會', '自然'] scores = [85, 92, 78, 88, 95] # 繪製圓餅圖 plt.pie(scores, labels=subjects, autopct='%1.1f%%') plt.title('各科成績分布') plt.show() ``` Output: ![image](https://hackmd.io/_uploads/HyzzBzYCgx.png) 範例 3:美化效果,添加顏色和陰影。 ```python= import matplotlib.pyplot as plt # 資料準備 categories = ['行動裝置', '筆記型電腦', '桌上型電腦', '平板電腦'] market_share = [45, 30, 15, 10] colors = ['#FF6B6B', '#4ECDC4', '#45B7D1', '#FFA07A'] # 繪製帶顏色和陰影的圓餅圖 plt.pie(market_share, labels=categories, colors=colors, autopct='%1.1f%%', shadow=True, startangle=90) plt.title('市場佔有率分析') plt.show() ``` Output: ![image](https://hackmd.io/_uploads/S1b8SzFCxl.png) 範例 4:凸顯效果,就是單獨把某一個扇形稍微拿出來一下。 ```python= import matplotlib.pyplot as plt # 資料準備 transport = ['汽車', '機車', '公車', '捷運', '腳踏車'] usage = [30, 25, 20, 15, 10] explode = (0, 0.1, 0, 0.2, 0) # 突顯機車和捷運 colors = ['gold', 'lightcoral', 'lightskyblue', 'lightgreen', 'plum'] # 繪製爆炸效果圓餅圖 plt.pie(usage, labels=transport, explode=explode, colors=colors, autopct='%1.1f%%', shadow=True, startangle=140) plt.title('通勤方式分布') plt.show() ``` Output: ![image](https://hackmd.io/_uploads/HkpKHGFAgg.png) 範例 5:繪製甜甜圈圖,就是圓餅圖然後中空這樣。 ```python= import matplotlib.pyplot as plt # 資料準備 languages = ['Python', 'JavaScript', 'Java', 'C++', 'Go'] popularity = [40, 25, 20, 10, 5] colors = ['#3498db', '#f39c12', '#e74c3c', '#9b59b6', '#1abc9c'] # 繪製甜甜圈圖 wedgeprops = {'width': 0.4, 'edgecolor': 'white', 'linewidth': 2} plt.pie(popularity, labels=languages, colors=colors, autopct='%1.1f%%', startangle=90, wedgeprops=wedgeprops) plt.title('程式語言使用率') plt.show() ``` Output: ![image](https://hackmd.io/_uploads/HyihrGKRle.png) 範例 6:自訂百分比顯示格式 ```python= import matplotlib.pyplot as plt import numpy as np # 資料準備 products = ['筆電', '手機', '耳機', '滑鼠', '鍵盤'] sales_amount = [120000, 85000, 35000, 15000, 25000] # 自訂函數顯示金額和百分比 def make_autopct(values): def my_autopct(pct): total = sum(values) val = int(round(pct*total/100.0)) return f'{pct:.1f}%\n(${val:,})' return my_autopct # 繪製圖表 plt.figure(figsize=(10, 7)) plt.pie(sales_amount, labels=products, autopct=make_autopct(sales_amount), startangle=90, textprops={'fontsize': 11, 'weight': 'bold'}) plt.title('產品銷售金額分析', fontsize=14, weight='bold') plt.show() ``` Output: ![image](https://hackmd.io/_uploads/HyFyLfKRxg.png) 範例 7:新增圖例。 ```python= import matplotlib.pyplot as plt # 資料準備 ages = ['18-25歲', '26-35歲', '36-45歲', '46-55歲', '56歲以上'] population = [15, 28, 32, 18, 7] colors = ['#FF6B9D', '#C44569', '#FFC048', '#16A085', '#2C3E50'] # 繪製帶圖例的圓餅圖 plt.figure(figsize=(10, 6)) wedges, texts, autotexts = plt.pie(population, colors=colors, autopct='%1.1f%%', startangle=90, textprops={'fontsize': 12}) # 新增圖例 plt.legend(wedges, ages, title='年齡層', loc='center left', bbox_to_anchor=(1, 0, 0.5, 1)) plt.title('顧客年齡分布', fontsize=14) plt.tight_layout() plt.show() ``` Output: ![image](https://hackmd.io/_uploads/BkNGIGFAll.png) 範例 8:多個圓餅圖比較,這部分用到 `subplot()` 函式。 ```python= import matplotlib.pyplot as plt # 資料準備 categories = ['線上課程', '實體課程', '混合模式'] year_2023 = [30, 50, 20] year_2024 = [45, 35, 20] # 建立子圖 fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(12, 5)) # 2023年圓餅圖 ax1.pie(year_2023, labels=categories, autopct='%1.1f%%', startangle=90, colors=['#FF6B6B', '#4ECDC4', '#45B7D1']) ax1.set_title('2023年授課方式分布', fontsize=12, weight='bold') # 2024年圓餅圖 ax2.pie(year_2024, labels=categories, autopct='%1.1f%%', startangle=90, colors=['#FF6B6B', '#4ECDC4', '#45B7D1']) ax2.set_title('2024年授課方式分布', fontsize=12, weight='bold') plt.tight_layout() plt.show() ``` Output: ![image](https://hackmd.io/_uploads/SypDIGFRle.png) ## 繪製直方圖 使用 `plt.hist()` 函式,語法如下: ```python plt.hist(x, bins=None, range=None, density=False, weights=None, cumulative=False, bottom=None, histtype='bar', align='mid', orientation='vertical', rwidth=None, log=False, color=None, label=None, stacked=False, **kwargs) ``` 主要參數: * `x`:必填參數,要繪製直方圖的數據(可以是列表、NumPy 陣列或多組數據)。 * `bins`:(一條一條的數量)箱子的數量或箱子邊界,可以是整數(如 `20`)或序列(如 `[10][11][8]`),預設為自動計算。 * `range`:元組,指定數據範圍 `(min, max)`,超出範圍的值會被忽略。 * `density`:布林值,如果為 `True`,會將直方圖標準化成機率密度,使總面積為 `1`(預設 `False`)。 * `weights`:權重陣列,與 `x` 相同形狀,用於加權統計。 樣式參數: `histtype`,直方圖類型有以下選項可選: * `'bar'`:傳統長條圖(預設)。 * `'barstacked'`:堆疊長條圖。 * `'step'`:只顯示邊界線。 * `'stepfilled'`:填充的階梯圖。 其他樣式參數: * `color`:設定顏色。 * `edgecolor`:設定邊框顏色。 * `alpha`:透明度(0~1)。 * `rwidth`:長條相對寬度(相對於箱子寬度的比例)。 進階參數: * `cumulative`:布林值,如果為 True,繪製累積分布圖。 * `orientation`:`'vertical'`(垂直,預設)或 `'horizontal'`(水平)。 * `log`:布林值,是否使用對數刻度。 * `align`:對齊方式,`'left'`、`'mid'`(預設)、`'right'`。 * `stacked`:布林值,多組數據是否堆疊顯示。 回傳值: 函數回傳 `(n, bins, patches)` 元組: * `n`:每個箱子的計數值。 * `bins`:箱子的邊界值。 * `patches`:圖形物件列表。 範例 1:簡單直方圖。 ```python= import matplotlib.pyplot as plt import numpy as np # 生成 1000 個學生的考試成績(平均 70 分,標準差 15) scores = np.random.normal(70, 15, 1000) # 繪製直方圖 plt.hist(scores, bins=50, color='skyblue', edgecolor='black') plt.xlabel('成績') plt.ylabel('學生人數') plt.title('期末考成績分布') plt.show() ``` Output: ![image](https://hackmd.io/_uploads/BkSmCfF0ex.png) 範例 2:設定數據範圍。 ```python= import matplotlib.pyplot as plt import numpy as np # 生成身高數據(公分) heights = np.random.normal(170, 10, 1000) # 只顯示 150-190 公分範圍 plt.hist(heights, bins=25, range=(150, 190), color='lightgreen', edgecolor='darkgreen', linewidth=1.2) plt.xlabel('身高(公分)') plt.ylabel('人數') plt.title('成年人身高分布(150-190cm)') plt.grid(axis='y', alpha=0.3) plt.show() ``` Output: ![image](https://hackmd.io/_uploads/r1BX1aKCxl.png) 範例 3:多組數據比較。 ```python= import matplotlib.pyplot as plt import numpy as np # 生成三個班級的考試成績 class_A = np.random.normal(75, 10, 200) class_B = np.random.normal(70, 12, 200) class_C = np.random.normal(80, 8, 200) # 繪製重疊直方圖 plt.hist(class_A, bins=20, alpha=0.6, label='A 班', color='red') plt.hist(class_B, bins=20, alpha=0.6, label='B 班', color='blue') plt.hist(class_C, bins=20, alpha=0.6, label='C 班', color='green') plt.xlabel('成績') plt.ylabel('學生人數') plt.title('三個班級成績分布比較') plt.legend() plt.grid(axis='y', alpha=0.3) plt.show() ``` Output: ![image](https://hackmd.io/_uploads/B1mJMaY0gl.png) 範例 4:堆疊直方圖。 ```python= import matplotlib.pyplot as plt import numpy as np # 不同性別的購物金額數據 male_spending = np.random.gamma(5, 200, 500) female_spending = np.random.gamma(6, 180, 500) # 繪製堆疊直方圖 plt.hist([male_spending, female_spending], bins=25, stacked=True, label=['男性', '女性'], color=['#3498db', '#e74c3c'], edgecolor='white') plt.xlabel('消費金額(元)') plt.ylabel('顧客人數') plt.title('不同性別消費金額分布(堆疊)') plt.legend() plt.show() ``` Output: ![image](https://hackmd.io/_uploads/By7zMatCgx.png) 範例 5:不同直方圖的效果展示。 ```python= import matplotlib.pyplot as plt import numpy as np # 生成數據 data = np.random.normal(50, 10, 500) # 建立子圖比較不同類型 fig, axes = plt.subplots(2, 2, figsize=(12, 10)) types = ['bar', 'barstacked', 'step', 'stepfilled'] colors = ['skyblue', 'coral', 'green', 'purple'] for ax, histtype, color in zip(axes.flatten(), types, colors): ax.hist(data, bins=20, histtype=histtype, color=color, edgecolor='black', alpha=0.7) ax.set_title(f'histtype = "{histtype}"', fontsize=12, weight='bold') ax.set_xlabel('數值') ax.set_ylabel('頻率') plt.tight_layout() plt.show() ``` Output: ![image](https://hackmd.io/_uploads/S1IczaK0ll.png) 範例 6:水平直方圖。 ```python= import matplotlib.pyplot as plt import numpy as np # 員工加班時數數據 overtime_hours = np.random.gamma(3, 2, 300) # 繪製水平直方圖 plt.hist(overtime_hours, bins=20, orientation='horizontal', color='orange', edgecolor='darkorange', alpha=0.8) plt.xlabel('員工人數') plt.ylabel('加班時數') plt.title('員工每月加班時數分布') plt.grid(axis='x', alpha=0.3) plt.show() ``` Output: ![image](https://hackmd.io/_uploads/rJl6GTKAgx.png) ## 繪製散佈圖 使用 `plt.scatter()` 函式,語法如下: ```python plt.scatter(x, y, s=None, c=None, marker=None, cmap=None, norm=None, vmin=None, vmax=None, alpha=None, linewidths=None, edgecolors=None, plotnonfinite=False, data=None, **kwargs) ``` 核心參數: * `x, y`:必填參數,數據點的座標位置(可以是列表、NumPy 陣列等陣列型態)。 * `s`:標記點的大小,單位是 points²(印刷點的平方,1 point = 1/72 英吋),可以是單一數值或陣列。 * `c`:標記點的顏色,可以是單一顏色、顏色陣列或數值序列(配合 `colormap` 使用)。 * `marker`:標記點的形狀,預設為 `'o'`(圓形)。 顏色映射參數: * `cmap`:顏色映射表名稱(如 `'viridis'`、`'plasma'`、`'coolwarm'`),用於將數值映射到顏色。 * `vmin, vmax`:顏色縮放的最小值和最大值,與 cmap 配合使用。 * `norm`:正規化物件,用於將數據值縮放到顏色映射範圍。 樣式參數: * `alpha`:透明度,範圍 `0~1`(`0` 為完全透明,`1` 為完全不透明)。 * `linewidths`:標記點邊框的寬度。 * `edgecolors`:標記點邊框的顏色。 * `label`:圖例標籤。 範例 1: ```python= import matplotlib.pyplot as plt import numpy as np # 模擬學生的讀書時間與考試成績 study_hours = np.array([2, 3, 5, 6, 8, 9, 10, 4, 7, 8]) exam_scores = np.array([55, 60, 75, 78, 88, 90, 95, 68, 85, 89]) # 繪製散點圖 plt.scatter(study_hours, exam_scores) plt.xlabel('讀書時間(小時)') plt.ylabel('考試成績') plt.title('讀書時間與考試成績的關係') plt.grid(True, alpha=0.3) plt.show() ``` Output: ![image](https://hackmd.io/_uploads/HJfI50Y0xe.png) 範例 2:使用不同標記形狀。 ```python= import matplotlib.pyplot as plt import numpy as np # 兩組數據:男生和女生的身高體重 male_height = np.array([170, 175, 168, 180, 172, 178]) male_weight = np.array([65, 70, 62, 78, 68, 75]) female_height = np.array([160, 165, 158, 162, 170, 163]) female_weight = np.array([50, 55, 48, 52, 60, 54]) # 繪製兩組散點圖 plt.scatter(male_height, male_weight, s=80, c='blue', marker='s', label='男生', alpha=0.6) plt.scatter(female_height, female_weight, s=80, c='red', marker='^', label='女生', alpha=0.6) plt.xlabel('身高(公分)') plt.ylabel('體重(公斤)') plt.title('身高與體重關係(依性別分類)') plt.legend() plt.grid(True, alpha=0.3) plt.show() ``` Output: ![image](https://hackmd.io/_uploads/BJrF9Ct0xl.png) ## 總結 ### 長條圖與橫條圖 * `plt.bar(x, height, ...)` → 垂直長條圖 * `plt.barh(y, width, ...)` → 水平長條圖(horizontal) 參數: | 參數 | 說明 | | ------------------------- | --------------------- | | `x` / `y` | 座標位置(類別或數值) | | `height` / `width` | 長條高度或寬度 | | `color` | 長條顏色 | | `edgecolor` / `linewidth` | 邊框顏色與寬度 | | `alpha` | 透明度 | | `bottom` / `left` | 起始位置(可用於堆疊) | | `label` | 圖例標籤 | | `align` | `'center'` 或 `'edge'` | ### 圓餅圖 ```python plt.pie(x, labels=None, colors=None, autopct=None, explode=None, startangle=0, shadow=False, wedgeprops=None, ...) ``` | 類別 | 參數 | 說明 | | --- | -------------------------- | -------------------- | | 基本 | `x` | 數值大小(必填) | | 標籤 | `labels` / `labeldistance` | 扇形名稱與距離 | | 顏色 | `colors` | 顏色列表 | | 百分比 | `autopct` | 百分比顯示格式(如 `%1.1f%%`) | | 爆炸 | `explode` | 突顯特定扇形 | | 起始角 | `startangle` | 起始角度(預設 0) | | 陰影 | `shadow` | 是否加陰影 | | 半徑 | `radius` | 圓餅半徑大小 | | 美化 | `wedgeprops` / `textprops` | 扇形與文字樣式 | ### 直方圖(Histogram) ```python plt.hist(x, bins=None, range=None, density=False, stacked=False, histtype='bar', color=None, alpha=None, orientation='vertical', ...) ``` | 類別 | 參數 | 說明 | | -- | --------------------------- | ---------------------------------------------- | | 資料 | `x` | 數值資料(list / NumPy 陣列) | | 箱數 | `bins` | 區間數或邊界 | | 範圍 | `range` | 限制繪製範圍 `(min, max)` | | 密度 | `density` | True 表示機率密度(總面積=1) | | 權重 | `weights` | 權重值 | | 樣式 | `histtype` | `'bar'`、`'barstacked'`、`'step'`、`'stepfilled'` | | 顏色 | `color`、`edgecolor`、`alpha` | 顏色、邊框、透明度 | | 對齊 | `align` | `'left'`、`'mid'`(預設)、`'right'` | | 累積 | `cumulative` | True 表示累積分布 | | 方向 | `orientation` | `'vertical'` 或 `'horizontal'` | | 堆疊 | `stacked` | 多組資料是否堆疊顯示 | ### 散佈圖(Scatter Plot) ```python plt.scatter(x, y, s=None, c=None, marker=None, cmap=None, norm=None, vmin=None, vmax=None, alpha=None, linewidths=None, edgecolors=None, plotnonfinite=False, data=None, **kwargs) ``` 核心參數: * `x, y`:必填參數,數據點的座標位置(可以是列表、NumPy 陣列等陣列型態)。 * `s`:標記點的大小,單位是 points²(印刷點的平方,1 point = 1/72 英吋),可以是單一數值或陣列。 * `c`:標記點的顏色,可以是單一顏色、顏色陣列或數值序列(配合 `colormap` 使用)。 * `marker`:標記點的形狀,預設為 `'o'`(圓形)。 顏色映射參數: * `cmap`:顏色映射表名稱(如 `'viridis'`、`'plasma'`、`'coolwarm'`),用於將數值映射到顏色。 * `vmin, vmax`:顏色縮放的最小值和最大值,與 cmap 配合使用。 * `norm`:正規化物件,用於將數據值縮放到顏色映射範圍。 樣式參數: * `alpha`:透明度,範圍 `0~1`(`0` 為完全透明,`1` 為完全不透明)。 * `linewidths`:標記點邊框的寬度。 * `edgecolors`:標記點邊框的顏色。 * `label`:圖例標籤。 ### 整理表 | 圖表類型 | 函式 | | ---- | --------------- | | 長條圖 | `plt.bar()` | | 橫條圖 | `plt.barh()` | | 圓餅圖 | `plt.pie()` | | 直方圖 | `plt.hist()` | | 散佈圖 | `plt.scatter()` | ## 參考資料 [matplotlib 函式庫 - matplotlib 教學 ( Python ) | STEAM 教育學習網](https://steam.oxxostudio.tw/category/python/example/matplotlib.html) [Matplotlib Tutorial - GeeksforGeeks](https://www.geeksforgeeks.org/python/matplotlib-tutorial/) [Matplotlib Bars | W3Schools](https://www.w3schools.com/python/matplotlib_bars.asp) [Matplotlib.pyplot.barh() function in Python - GeeksforGeeks](https://www.geeksforgeeks.org/python/matplotlib-pyplot-barh-function-in-python/) [Matplotlib Pie Charts | W3Schools](https://www.w3schools.com/python/matplotlib_pie_charts.asp) [Matplotlib.pyplot.hist() in Python - GeeksforGeeks](https://www.geeksforgeeks.org/python/matplotlib-pyplot-hist-in-python/) [Matplotlib Scatter | W3Schools](https://www.w3schools.com/python/matplotlib_scatter.asp)