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

如何为Pandas柱状图设置格式规范的X轴标签?

如何为Pandas柱状图设置格式规范的X轴标签?

问题现象

运行以下代码绘制折线图时,X轴的日期标签会自动适配格式,显示规范清晰:

covid = pd.read_csv("https://covid.ourworldindata.org/data/owid-covid-data.csv")
covid.set_index("date", inplace=True)
covid.index = pd.to_datetime(covid.index)
covid[covid.location=="Denmark"].new_cases_smoothed_per_million.plot()

折线图效果:X轴日期按合理间隔展示,无重叠,格式规范

但改用bar方法绘制柱状图时,X轴所有日期标签会挤在一起,格式混乱无法阅读:

covid[covid.location=="Denmark"].new_cases_smoothed_per_million.plot.bar()

柱状图问题:X轴标签密集重叠,无法分辨日期信息


解决方法

Pandas柱状图默认会渲染所有索引标签,而日期类数据通常条目众多,导致标签重叠。以下是几种实用的优化方案:

1. 用Matplotlib工具自定义刻度格式与间隔

借助Matplotlib的日期处理模块,指定刻度显示间隔和格式:

import matplotlib.pyplot as plt
from matplotlib.dates import DateFormatter, MonthLocator

# 筛选丹麦的目标数据
dk_data = covid[covid.location=="Denmark"].new_cases_smoothed_per_million

# 绘制柱状图并获取坐标轴对象
ax = dk_data.plot.bar(figsize=(12, 6))

# 设置X轴主刻度:每3个月显示一个标签
ax.xaxis.set_major_locator(MonthLocator(interval=3))
# 设置日期显示格式为「年-月」
ax.xaxis.set_major_formatter(DateFormatter("%Y-%m"))

# 旋转标签避免重叠,调整布局防止截断
plt.xticks(rotation=45)
plt.tight_layout()
plt.show()

2. 对日期数据降采样减少标签数量

若无需展示每日数据,可先按周/月聚合数据,再绘制柱状图:

# 按月聚合,取每日数据的平均值
dk_monthly = dk_data.resample("M").mean()
# 绘制聚合后的柱状图,X轴自动显示规范的月份标签
dk_monthly.plot.bar(figsize=(10, 6))
plt.xticks(rotation=45)
plt.tight_layout()
plt.show()

3. 手动指定要显示的刻度位置与标签

直接筛选部分索引作为刻度,避免全部渲染:

ax = dk_data.plot.bar(figsize=(12, 6))
# 每隔100天选取一个刻度
ticks = ax.get_xticks()[::100]
# 转换为指定格式的日期标签
labels = [dk_data.index[i].strftime("%Y-%m-%d") for i in ticks]
# 应用自定义刻度
ax.set_xticks(ticks)
ax.set_xticklabels(labels, rotation=45)
plt.tight_layout()
plt.show()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 05:46:18