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

如何将datetime64格式日期格式化为Matplotlib xtick标签?

问题:自定义散点图X轴日期刻度格式

我在DataFrame中有一列名为"Datum2"的datetime64格式日期(原始格式为YYYYMMDD),希望将其用作散点图的X轴刻度标签,要求标签显示年份及月份缩写(例如2022、Nov、Dec、2023、Jan、Feb等)。目前使用的代码生成的刻度不符合需求,参考了Matplotlib的ConciseDateConverter但不知如何落地,现有代码如下:

import seaborn as sns
import matplotlib.pyplot as plt
import scipy.stats as stats
import numpy as np
import pandas as pd

df_tagesspiegel_final['Datum2'] = pd.to_datetime(df_tagesspiegel_final['Datum'], format='%Y%m%d')

# Scatterplot erstellen
sns.scatterplot(x='Datum2', y = 'compound', data=df_tagesspiegel_final)

#Quintile als xticks speichern
xticks = [df_tagesspiegel_final['Datum2'].min(), df_tagesspiegel_final['Datum'].median(numeric_only=True), df_tagesspiegel_final['Datum'].max()]

plt.gca().set(xticks=xticks, xlabel='Datum', ylabel='compound', title='Compound-Sentiment im Zeitverlauf')

plt.show()
解决方案

直接使用Matplotlib的ConciseDateFormatter即可实现智能的日期刻度格式,它会根据数据的时间跨度自动切换显示年份、月份缩写等标签,无需手动指定固定刻度。修改后的代码如下:

import seaborn as sns
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
import pandas as pd

# 确保日期列转换为datetime格式
df_tagesspiegel_final['Datum2'] = pd.to_datetime(df_tagesspiegel_final['Datum'], format='%Y%m%d')

# 绘制散点图
sns.scatterplot(x='Datum2', y='compound', data=df_tagesspiegel_final)

# 获取当前坐标轴
ax = plt.gca()

# 使用ConciseDateFormatter设置X轴刻度
# 先设置日期定位器,让刻度间隔更合理
locator = mdates.AutoDateLocator(minticks=3, maxticks=7)
formatter = mdates.ConciseDateFormatter(locator)
ax.xaxis.set_major_locator(locator)
ax.xaxis.set_major_formatter(formatter)

# 设置图表其他属性
ax.set(xlabel='Datum', ylabel='compound', title='Compound-Sentiment im Zeitverlauf')

# 自动旋转X轴标签,避免重叠
plt.xticks(rotation=45)

plt.show()

关键说明:

  • AutoDateLocator会根据数据的时间范围自动选择合适的刻度间隔,minticks和maxticks控制刻度数量的范围
  • ConciseDateFormatter会自动切换刻度显示格式:当跨度包含跨年时,会显示年份+月份缩写;同一年份内则只显示月份缩写,完全匹配需求
  • 移除了手动指定xticks的代码,让自动刻度逻辑生效
  • 添加plt.xticks(rotation=45)避免标签重叠

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 03:52:55