求助: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
相关产品推荐
相关产品推荐

