You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何基于Pandas为2020-2022年数据创建3个箱线图子图?

修改代码生成三年数据的箱线图子图

修改核心点:

  • 将子图布局从1行2列调整为1行3列,对应三年的数据展示
  • 添加2022年数据的箱线图绘制逻辑
  • 统一子图的Y轴标签(原代码中两个子图标签不一致,此处修正为合理的统一标签)
  • 优化布局避免标签重叠

修改后的完整代码(推荐写法,更规范):

df2020 = transport_data.loc['2020']
df2021 = transport_data.loc['2021']
df2022 = transport_data.loc['2022']

# 直接通过subplots创建1行3列的子图结构
fig, axs = plt.subplots(nrows=1, ncols=3, figsize=(18,7))

# 依次绘制三年数据的箱线图
df2020.boxplot(grid=False, rot=90, fontsize=10, ax=axs[0])
df2021.boxplot(grid=False, rot=90, fontsize=10, ax=axs[1])
df2022.boxplot(grid=False, rot=90, fontsize=10, ax=axs[2])

# 批量设置子图的标签与标题
for ax, year in zip(axs, ['2020', '2021', '2022']):
    ax.set_ylabel('乘客数量', fontsize=12)
    ax.set_title(year, fontsize=14)

# 自动调整子图间距,防止标签被截断
plt.tight_layout()
plt.show()

兼容原代码写法的修改版本:

df2020 = transport_data.loc['2020']
df2021 = transport_data.loc['2021']
df2022 = transport_data.loc['2022']

fig = plt.figure(figsize=(18,7))
# 调整为1行3列的子图索引
ax = [
    plt.subplot(131),
    plt.subplot(132),
    plt.subplot(133)]

df2020.boxplot(grid=False, rot=90, fontsize=10, ax=ax[0])
df2021.boxplot(grid=False, rot=90, fontsize=10, ax=ax[1])
df2022.boxplot(grid=False, rot=90, fontsize=10, ax=ax[2])

# 设置每个子图的标签与标题
ax[0].set_ylabel('乘客数量', fontsize=12)
ax[1].set_ylabel('乘客数量', fontsize=12)
ax[2].set_ylabel('乘客数量', fontsize=12)

ax[0].set_title('2020')
ax[1].set_title('2021')
ax[2].set_title('2022')

plt.tight_layout()
plt.show()

内容的提问来源于stack exchange,提问作者jorge

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 00:05:33