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

Python-Pandas日期索引柱状图绘制:修复X轴带时间及美化问题

解决日期轴带时间的问题并美化柱状图

我来帮你搞定这个问题!首先,X轴显示日期带时间,大概率是因为你的DataFrame索引虽然是日期,但实际是包含时分秒的datetime64类型(默认补00:00:00),绘图时会把完整的datetime格式输出出来。另外,你代码里写的df.X.plot.bar应该是笔误吧?要绘制y列的话应该是df.y.plot.bar才对~

下面分步骤给你解决:

1. 先修复日期显示问题

有两种常用方法可以去掉X轴的时间部分:

方法一:预处理DataFrame的索引,截断时间部分

直接把datetime索引转换为仅保留日期的格式,既保持索引的datetime类型,又去掉多余的时间:

import pandas as pd

# 先确保索引是datetime类型(如果原始数据还不是的话)
df.index = pd.to_datetime(df.index)
# 截断时间,只保留日期部分
df.index = df.index.floor('D')

处理完再绘图,X轴就只会显示YYYY-MM-DD格式的日期了。

方法二:绘图时直接设置X轴刻度格式

如果不想修改原始数据的索引,可以在绘图时用matplotlib的DateFormatter指定日期显示规则:

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

# 确保索引是datetime类型
df.index = pd.to_datetime(df.index)

# 绘制柱状图
ax = df['y'].plot(kind='bar', figsize=(10, 6))

# 强制X轴显示为YYYY-MM-DD格式
date_form = DateFormatter("%Y-%m-%d")
ax.xaxis.set_major_formatter(date_form)

2. 美化你的柱状图

接下来给图表做一些细节优化,让它更清晰美观:

import pandas as pd
import matplotlib.pyplot as plt
from matplotlib.dates import DateFormatter

# 数据预处理
df.index = pd.to_datetime(df.index)
df.index = df.index.floor('D')

# 创建绘图对象,设置画布大小
fig, ax = plt.subplots(figsize=(12, 7))

# 绘制y列柱状图,自定义柱子颜色和边缘样式
df['y'].plot(kind='bar', ax=ax, color='#3498db', edgecolor='white', linewidth=1)

# 设置X轴格式和标签旋转(避免重叠)
date_form = DateFormatter("%Y-%m-%d")
ax.xaxis.set_major_formatter(date_form)
plt.xticks(rotation=45, ha='right', fontsize=10)

# 添加标题和轴标签
ax.set_title('Y列数据按日期分布柱状图', fontsize=14, pad=20)
ax.set_xlabel('日期', fontsize=12)
ax.set_ylabel('Y值', fontsize=12)

# 添加Y轴网格线,增强可读性
ax.yaxis.grid(True, linestyle='--', alpha=0.6)
ax.set_axisbelow(True)  # 让网格线置于柱子下方,不遮挡数据

# 自动调整布局,防止标签被截断
plt.tight_layout()

# 显示图表
plt.show()

额外说明:处理重复日期的情况

看你的示例数据里有两行相同的日期(2018-12-31),这样绘图时同一日期会出现两个柱子。如果你想把同一日期的y值合并(比如求和/取平均),可以先做聚合:

# 按日期聚合,对y列求和
df_agg = df.groupby(df.index)['y'].sum().reset_index()
df_agg.set_index('Date', inplace=True)

# 用聚合后的DataFrame绘图,同一日期只会有一个柱子
df_agg['y'].plot(kind='bar', figsize=(12,7), color='#3498db')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 13:29:08