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

使用pandas的DataFrame.plot()自定义刻度后残留原刻度问题

解决Pandas时间序列绘图自定义x轴刻度残留问题

问题出在Pandas的plot()方法会自动生成时间轴刻度,直接调用set_xticks()和set_xticklabels()仅会添加自定义刻度,无法完全覆盖原有自动生成的刻度。可以通过以下两种方式彻底替换:

方法1:使用plt.xticks()直接替换

plt.xticks()会直接覆盖原有刻度设置,确保只显示自定义的刻度和标签:

import pandas as pd
import matplotlib.pyplot as plt
import numpy.random as rn

series_dt = pd.Series(rn.randint(1000,10000,24),index=pd.date_range(start='2020-01-01',periods=24,freq='MS'))
ax = series_dt.plot(figsize=(10,7),rot=45)

xticks_positions = series_dt.index[::2]
# 直接替换所有刻度和标签
plt.xticks(ticks=xticks_positions, labels=xticks_positions.strftime('%b %Y'), rotation=45)
plt.show()

方法2:使用Matplotlib日期定位器与格式化器(更规范)

针对时间轴,使用Matplotlib的FixedLocator和DateFormatter可以精准控制刻度,彻底替换自动生成的刻度:

import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
import numpy.random as rn

series_dt = pd.Series(rn.randint(1000,10000,24),index=pd.date_range(start='2020-01-01',periods=24,freq='MS'))
ax = series_dt.plot(figsize=(10,7),rot=45)

# 指定自定义刻度位置
ax.xaxis.set_major_locator(mdates.FixedLocator(series_dt.index[::2]))
# 设置标签格式
ax.xaxis.set_major_formatter(mdates.DateFormatter('%b %Y'))

plt.show()

这两种方式都能确保仅显示你自定义的x轴刻度和标签,不会残留原有自动生成的刻度。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 08:28:16