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

Python绘图中如何设置日期轴按指定区间(如月末)显示

解决Pandas散点图X轴日期密集挤压问题

问题场景

使用以下代码绘制日期-数量散点图时,X轴日期过于密集导致无法清晰查看,希望按指定日期区间(如每月最后一天:2022-01-30、2022-02-28、2022-03-31等)显示刻度:

import pandas as pd
import matplotlib.pyplot as plt

# 示例数据
data = {'2022-01-30': 50, '2022-01-31': 152, '2022-02-01': 41, 
        '2022-02-02': 50,'2022-02-03': 50, '2022-02-04': 50,
        '2022-02-05': 50, '2022-02-06': 50, '2022-02-07': 50, 
        '2022-02-08': 50, '2022-02-09': 50, '2022-09-30': 50}

df = pd.Series(data, name='Quantity').rename_axis('Date').reset_index()
df.plot(kind='scatter', x='Date', y='Quantity')
plt.show()

解决方案核心步骤

要实现指定日期区间显示X轴刻度,关键是将日期列转为datetime类型,并利用matplotlib的日期定位器和格式化工具自定义刻度:

方法1:按每月最后一天自动生成刻度

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

# 1. 将Date列转换为datetime类型(必须步骤)
df['Date'] = pd.to_datetime(df['Date'])

# 2. 创建绘图对象并绘制散点图
fig, ax = plt.subplots()
ax.scatter(df['Date'], df['Quantity'])

# 3. 设置X轴主刻度为每月最后一天
ax.xaxis.set_major_locator(MonthLocator(bymonthday=-1))
# 设置日期显示格式
ax.xaxis.set_major_formatter(DateFormatter('%Y-%m-%d'))

# 4. 旋转X轴标签避免重叠,自动调整布局
plt.xticks(rotation=45)
plt.tight_layout()

plt.show()

方法2:完全自定义指定日期刻度

如果需要精准指定要显示的日期列表,可直接手动设置刻度值:

import pandas as pd
import matplotlib.pyplot as plt

# 1. 转换日期列
df['Date'] = pd.to_datetime(df['Date'])

# 2. 自定义要显示的目标日期
custom_dates = pd.to_datetime([
    '2022-01-30', '2022-02-28', '2022-03-31', 
    '2022-04-30', '2022-05-31', '2022-06-30', 
    '2022-07-31', '2022-08-31', '2022-09-30'
])

# 3. 绘图并设置自定义刻度
fig, ax = plt.subplots()
ax.scatter(df['Date'], df['Quantity'])

ax.set_xticks(custom_dates)
ax.set_xticklabels(custom_dates.strftime('%Y-%m-%d'))

# 优化标签显示
plt.xticks(rotation=45)
plt.tight_layout()

plt.show()

关键说明

  • 必须先将Date列转为datetime类型,否则matplotlib无法识别为日期数据进行处理。
  • matplotlib还提供WeekLocator、QuarterLocator等工具,可按需调整刻度频率。
  • rotation=45和tight_layout()是优化标签显示的常用手段,避免文字重叠。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 11:22:21