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

如何调整Matplotlib水平条形图(barh)宽度,优化双向条形图布局?

修改后的Python代码(适配韩国2021年人口双向水平条形图)
import matplotlib.pyplot as plt

# 替换为你的真实人口数据
age_groups = ['0-9', '10-19', '20-29', '30-39', '40-49', '50-59', '60-69', '70-79', '80+']
male_pop = [4500000, 4800000, 5200000, 5100000, 5500000, 5000000, 3800000, 2200000, 1000000]
female_pop = [4200000, 4500000, 4900000, 4800000, 5300000, 5100000, 4100000, 2800000, 1500000]

# 加宽画布宽度,为右侧女性标注预留空间
fig, ax = plt.subplots(figsize=(12, 6))

# 绘制左右两侧条形,控制条形垂直高度避免拥挤
ax.barh(age_groups, male_pop, height=0.7, color='#1f77b4', label='男性')
ax.barh(age_groups, [-x for x in female_pop], height=0.7, color='#ff7f0e', label='女性')

# 扩展X轴范围,防止标注贴近边缘
ax.set_xlim(-6000000, 6000000)

# 男性标注:条形右侧加小偏移
for i, v in enumerate(male_pop):
    ax.text(v + 100000, i, f'{v:,}', va='center')
# 女性标注:增加向左偏移量,拉开与Y轴文本的距离
for i, v in enumerate(female_pop):
    ax.text(-v - 300000, i, f'{v:,}', va='center')

# 基础美化
ax.set_title('韩国2021年各年龄段人口分布', fontsize=14)
ax.legend()
ax.axvline(0, color='black', linewidth=0.5)
plt.tight_layout()
plt.show()

核心调整点

  • 画布尺寸:通过figsize=(12,6)加宽整体宽度,解决右侧标注空间不足的问题
  • 条形高度:height=0.7控制条形垂直间距,避免Y轴文本与条形过度拥挤
  • 标注偏移:女性标注的text函数中额外增加向左偏移,彻底拉开与Y轴文本的距离
  • X轴范围:扩展左右边界,防止标注超出画布或贴近边缘

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 17:27:08