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

求助:Matplotlib中高度为0的柱状图颜色位置不匹配

解决Matplotlib柱状图颜色与年份错位问题

问题核心是你的颜色列表生成逻辑和表格中的年份序列不匹配,导致高度为0的柱子出现时颜色错位。

修复步骤

  • 不要基于固定年份范围(range(1999,2023))生成颜色列表,而是直接遍历表格中的Year列来生成,确保每个颜色与表格中的每一行(对应一个柱子)严格一一对应。

修正后的代码

# 基于表格中的实际年份生成颜色列表
colors = [
    'red' if 1990 <= year <= 1999 
    else 'blue' if 2000 <= year <= 2009 
    else 'green' if 2010 <= year <= 2022 
    else 'gray'  # 处理不在目标区间内的年份,可自定义
    for year in table['Year']
]

# 绘制柱状图,此时颜色会严格匹配每个年份的柱子(包括高度为0的)
plt.bar(table['Year'], table['Occurrences'], color=colors)

原理说明

Matplotlib的plt.bar会按照传入的x轴数据顺序依次分配颜色列表中的颜色,不管柱子高度是否为0。之前的错误是颜色列表基于你预设的年份范围生成,若表格中的年份序列和预设范围不一致(比如有缺失、顺序不同),就会导致颜色和柱子错位。直接基于表格的Year列生成颜色列表,能保证每个位置的颜色与对应年份的柱子完全匹配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 19:16:05