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

Matplotlib柱状图横轴无法显示全部值名称的问题排查与解决

问题排查与解决:Matplotlib柱状图横轴年份显示不全+未定义变量报错

下面是针对你代码中两个问题的具体解决方法:

1. 先解决year_percentages未定义的报错

代码里直接使用了year_percentages但未提前定义,需要基于top_12的计数计算对应百分比,添加以下代码即可:

year_percentages = (top_12 / top_12.sum()) * 100

2. 解决横轴年份显示不全的问题

横轴无法显示全部12个年份,多是Matplotlib自动优化刻度导致的,以下是几种可行的解决方式:

  • 方法一:强制指定所有刻度标签
    通过plt.xticks明确绑定每个柱子对应的年份标签,确保全部显示:
plt.xticks(ticks=range(len(top_12)), labels=top_12.index, rotation=45, ha='right')
  • 方法二:将年份索引转为字符串类型
    如果年份是数值类型(如int),Matplotlib会把它当作连续数值处理,自动跳过部分刻度。转为字符串后,每个值会被当作独立类别显示:
top_12.index = top_12.index.astype(str)
  • 方法三:调大图表宽度
    若图表宽度不足,标签会被挤压隐藏,可增加figsize的宽度值:
plt.figure(figsize=(12, 6))  # 把原宽度10调整为12,给标签预留更多空间

修正后的完整代码

year_counts = bi['year'].value_counts()
top_12 = year_counts.nlargest(12)  
# 新增:计算各年份占比
year_percentages = (top_12 / top_12.sum()) * 100

# 调大图表宽度,优化标签显示空间
plt.figure(figsize=(12, 6))
bars = plt.bar(top_12.index, top_12.values, color='skyblue')

for bar, percentage in zip(bars, year_percentages):
    height = bar.get_height()
    plt.text(bar.get_x() + bar.get_width() / 2, height, f'{percentage:.2f}%', ha='center', va='bottom')

# 强制显示所有年份标签
plt.xticks(ticks=range(len(top_12)), labels=top_12.index, rotation=45, ha='right')

plt.xlabel('Year')
plt.ylabel('Count')
plt.title('Bar Graph of Top 12 Year Counts with Percentages')

plt.tight_layout()
plt.show()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 04:35:14