鋒哥原創的Matplotlib3 Python數據可視化視頻教程:
2026版 Matplotlib3 Python 數據可視化 視頻教程(無廢話版) 玩命更新中~_嗶哩嗶哩_bilibili
課程介紹
本課程講解利用python進行數據可視化 科研繪圖-Matplotlib,學習Matplotlib圖形參數基本設置,繪圖參數及主要函數,以及Matplotlib基礎繪圖,和Matplotlib高級繪圖。
繪制面積圖(Area)
面積圖是數據可視化中常用的圖表類型,用于展示數據隨時間或類別的變化趨勢,特別適合表現多個數據系列的累積關系。下面我將詳細介紹如何使用 Matplotlib 繪制面積圖。
面積圖其實是特殊的折線圖,只不過是通過plt.fill_between()方法,填充兩條曲線之間區域。
plt.fill_between()
是 Matplotlib 中用于填充兩條曲線之間區域的函數,常用于可視化置信區間、誤差范圍或閾值區域。以下是詳細解析:
plt.fill_between(x, # x軸坐標值(數組)y1, # 第一條曲線的y值(數組)y2=0, # 第二條曲線的y值(數組或標量,默認為0)where=None, # 條件篩選(布爾數組)interpolate=False, # 是否在交點插值step=None, # 階梯填充模式('pre'/'post'/'mid')alpha=None, # 透明度(0-1)color=None, # 填充顏色**kwargs # 其他Polygon屬性(如hatch, edgecolor)
)
我們來看一個基本示例:
import matplotlib.pyplot as plt
import numpy as np# 設置中文字體支持
plt.rcParams['font.sans-serif'] = ['SimHei'] # 用來正常顯示中文標簽
plt.rcParams['axes.unicode_minus'] = False # 用來正常顯示負號# 創建數據
x = np.linspace(0, 10, 100)
y = np.sin(x) * 0.5 + 1 # 正弦波偏移# 創建圖形
plt.figure(figsize=(10, 6))
plt.fill_between(x, y, color="skyblue", alpha=0.4) # 填充區域
plt.plot(x, y, color="Slateblue", alpha=0.6, linewidth=2) # 繪制線條# 添加標題和標簽
plt.title('基本面積圖: 正弦波', fontsize=14, fontweight='bold')
plt.xlabel('時間', fontsize=12)
plt.ylabel('數值', fontsize=12)
plt.grid(True, linestyle='--', alpha=0.7)plt.tight_layout()
plt.show()
我們也可以用plt.stackplot()方法來繪制堆疊面積圖,堆疊面積圖用于展示多個數據系列的累積關系,每個系列堆疊在前一個系列之上。
plt.stackplot()
是 Matplotlib 中用于創建堆疊面積圖的函數,特別適合展示多個數據序列隨時間的累積變化以及各部分的比例關系。以下是詳細解析:
plt.stackplot(x, # x軸坐標值(數組)*args, # 多個y值序列(每個序列代表一個堆疊層)labels=(), # 各層的標簽(用于圖例)colors=None, # 各層的顏色baseline='zero', # 基線模式('zero', 'sym', 'wiggle', 'weighted_wiggle')**kwargs # 其他Polygon屬性(alpha, edgecolor等)
)
我們來看一個堆疊面積示例:
import matplotlib.pyplot as plt
import numpy as np# 設置中文字體支持
plt.rcParams['font.sans-serif'] = ['SimHei'] # 用來正常顯示中文標簽
plt.rcParams['axes.unicode_minus'] = False # 用來正常顯示負號# 創建數據
x = np.arange(0, 10, 0.1)
y1 = np.sin(x) * 0.5 + 1
y2 = np.cos(x) * 0.3 + 0.5
y3 = np.exp(-x / 5) * 1.5# 創建圖形
plt.figure(figsize=(10, 6))# 使用stackplot繪制堆疊面積圖
plt.stackplot(x, y1, y2, y3,colors=['#FF9999', '#66B2FF', '#99FF99'],alpha=0.8,labels=['產品A', '產品B', '產品C'])# 添加標題和標簽
plt.title('產品銷售額堆疊面積圖', fontsize=14, fontweight='bold')
plt.xlabel('季度', fontsize=12)
plt.ylabel('銷售額 (百萬)', fontsize=12)
plt.legend(loc='upper left', fontsize=10)
plt.grid(True, linestyle='--', alpha=0.5)plt.tight_layout()
plt.show()
運行效果: