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

修改seaborn柱状图xtick标签后出现条形缺失该如何解决?

问题根源

你出现该问题的核心原因是代码执行顺序错误:你在调用set_xticks(range(len(Months)))和set_xticklabels(Months)时,Months变量还没有被定义,此时实际调用的是之前运行残留的旧Months变量,大概率旧变量的长度只有11,导致你只设置了11个x轴刻度,第12个对应12月的条形就被挤出了显示区域。
其次还有两个隐藏风险:

  • 直接从saledate字段提取的月份字符串没有去重,长度和groupby聚合后的12个x轴类别不匹配
  • 没有按数字月份排序,可能出现标签和实际月份数值不对应的问题

解决方法

调整代码顺序,先提取排序去重后的月份标签,再设置刻度,保证标签数量和x轴类别数量完全匹配,示例代码如下:

# 第一步:先按数字月份排序,保证后续标签顺序和x轴顺序一致
df_pr_2020 = df_pr_2020.sort_values('Month').reset_index(drop=True)
# 第二步:提取去重后的月份字符串标签,长度和x轴类别数(12个)完全对应
Months = df_pr_2020['saledate'].dt.strftime('%b').unique()

# 第三步:绘图
pr_sales = sns.barplot(x='Month', y='dollartotal', color='lightblue', data=df_pr_2020)
pr_sales.set(xlabel='2020 by Month', ylabel='Dollars', title='2020 Pre-Roll Sales ')
# 第四步:设置刻度和标签,两者长度完全匹配
pr_sales.set_xticks(range(len(Months)))
pr_sales.set_xticklabels(Months)

如果你的数据中存在某个月无销售记录的情况,也可以手动生成12个月份的标签保证完整性:

# 手动生成1-12月对应的英文月份缩写,顺序完全匹配数字月份
Months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 19:18:01