练习1: plt.subplot()基础 - 2x1布局
知识点:plt.subplot()
使用plt.subplot()在一个2x1的布局(2行1列)中,分别绘制条形图和折线图来展示智能手表和蓝牙耳机的季度销量。
数据说明:
智能手表销量:[120, 150, 130, 180] 万台
蓝牙耳机销量:[200, 180, 220, 250] 万台
时间范围:第一季度到第四季度
关键实现:
plt.subplot(211) # 2行1列的第1个子图
plt.bar(quarters, watch_sales)
plt.title('智能手表季度销量')
plt.subplot(212) # 2行1列的第2个子图
plt.plot(quarters, headset_sales, 'g-s')
plt.title('蓝牙耳机季度销量')
练习2: plt.subplots()与坐标轴共享 - 1x2布局
知识点:plt.subplots()和sharey=True
使用plt.subplots()创建一个1x2的布局(1行2列),让两个子图共享Y轴,便于比较不同社交平台的用户性别比例。
数据说明:
平台:微博、B站、抖音、小红书、知乎
男性用户:[55, 45, 50, 30, 60] 百万
女性用户:[45, 55, 50, 70, 40] 百万
关键实现:
fig, (ax1, ax2) = plt.subplots(1, 2, sharey=True)
ax1.barh(platforms, male_users)
ax2.barh(platforms, female_users)
练习3: plt.subplot2grid()非对称布局 - 2x2网格
知识点:plt.subplot2grid(),使用rowspan和colspan
使用plt.subplot2grid()创建一个2x2的非对称网格布局,展示网站流量来源分析和月度访问量趋势。
数据说明:
流量来源:直接访问20%、搜索引擎40%、社交媒体30%、推荐链接10%
2024年变化:直接访问15%、搜索引擎35%、社交媒体40%、推荐链接10%
月度访问量:1.5→1.8→2.2→2.0→2.5→2.8 百万(1-6月)
关键实现:
ax1 = plt.subplot2grid((2,2), (0,0)) # 左上
ax2 = plt.subplot2grid((2,2), (1,0)) # 左下
ax3 = plt.subplot2grid((2,2), (0,1), rowspan=2) # 右侧跨2行
练习4: ax.twinx()双坐标轴 - 股价与成交量
知识点:ax.twinx()
在同一个图表中使用两个Y轴(左侧和右侧)来展示不同尺度的数据,分析股票价格与成交量的关系。
数据说明:
股价走势:100→105→115→110→120→135 元
成交量:1.2→1.5→2.0→1.8→2.5→3.0 百万股
时间范围:1-6月
关键实现:
ax1 = plt.subplots()
ax1.bar(months, volume, color='tab:blue')
ax2 = ax1.twinx()
ax2.plot(months, price, 'r-o')
ax1.set_ylabel('成交量 (百万股)', color='tab:blue')
ax2.set_ylabel('股价 (元)', color='tab:red')
练习5: GridSpec 自定义布局 - 大学招生分析
知识点:matplotlib.gridspec.GridSpec和constrained_layout=True
使用GridSpec创建灵活的2x2布局,展示大学年度招生总体趋势和分学院招生情况。
数据说明:
总招生:2021年20000→2024年24000人
学院分布:工学院8000、文学院5000、商学院6000、理学院4000人
数据年份:2021-2024年
关键实现:
fig = plt.figure(constrained_layout=True)
gs = fig.add_gridspec(2, 2)
ax1 = fig.add_subplot(gs[0, :]) # 跨2列
ax2 = fig.add_subplot(gs[1, 0]) # 左下
ax3 = fig.add_subplot(gs[1, 1]) # 右下