You need to enable JavaScript to run this app. 如何使用fig, ax = plt.subplots()同一行绘制5个纽约行政区横向条形图
优惠活动
大模型
产品
解决方案
定价
更多

如何使用fig, ax = plt.subplots()同一行绘制5个纽约行政区横向条形图

实现方案

核心逻辑是创建子图时指定1行5列的布局,再遍历每个子图绘制对应行政区的横向条形图即可,可直接运行的示例代码如下:

import matplotlib.pyplot as plt

# 纽约5个行政区
boroughs = ["布朗克斯", "布鲁克林", "曼哈顿", "皇后区", "斯塔滕岛"]
# 演示统计指标,可替换为你自己的业务指标
metrics = ["平均房价(万美元)", "人均月收入(千美元)", "失业率(%)"]
# 各行政区对应指标数据,可替换为你的真实数据
borough_data = {
    "布朗克斯": [58, 3.2, 8.1],
    "布鲁克林": [92, 4.5, 5.7],
    "曼哈顿": [210, 7.8, 4.2],
    "皇后区": [76, 4.1, 5.1],
    "斯塔滕岛": [65, 3.8, 4.8]
}

# 生成1行5列的子图,设置画布尺寸避免内容拥挤
fig, axes = plt.subplots(nrows=1, ncols=5, figsize=(20, 5))

# 遍历行政区和对应子图,逐个绘制横向条形图
for idx, (borough, ax) in enumerate(zip(boroughs, axes)):
    ax.barh(metrics, borough_data[borough])
    ax.set_title(borough)
    # 仅保留第一个子图的y轴标签,避免重复显示浪费空间
    if idx != 0:
        ax.set_yticks([])

# 自动调整子图间距,避免标题、标签重叠
plt.tight_layout()
plt.show()
  • 如果需要调整子图横向间距,可以给tight_layout()传入w_pad参数设置,比如plt.tight_layout(w_pad=2)
  • 横向条形图的样式自定义规则和普通条形图一致,可按需修改颜色、条形高度、边框等属性
  • 需要给条形添加数值标注的话,可在绘制barh后遍历数值,调用ax.text()方法添加对应文本即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.17 16:36:07