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

如何修复Matplotlib中股票十年数据绘图的X轴标签重叠问题

解决Matplotlib绘制股票走势时X轴标签重叠问题

我用DataFrame绘制十年跨度的每日股票收盘价走势,运行以下代码后,X轴的日期标签出现严重重叠,想要实现类似参考图那样清晰的X轴显示效果。

原代码:

df = pd.read_csv("USO.csv")
df = df[['Date', 'Close']]
df = df.set_index('Date')

plt.plot(df.index, df['Close'], color='forestgreen')

当前效果:
当前X轴标签重叠的股票走势

期望效果:
清晰X轴标签的股票走势


方法1:转换日期索引为datetime类型,让Matplotlib自动处理日期格式化

Matplotlib对字符串日期的支持较差,将索引转为datetime类型后,它会自动优化刻度显示,再配合自动旋转标签即可解决重叠问题:

import pandas as pd
import matplotlib.pyplot as plt

df = pd.read_csv("USO.csv")
df['Date'] = pd.to_datetime(df['Date'])  # 把日期列转为datetime类型
df = df.set_index('Date')

plt.plot(df.index, df['Close'], color='forestgreen')
plt.gcf().autofmt_xdate()  # 自动旋转日期标签,避免横向重叠
plt.show()

方法2:手动设置刻度间隔与标签样式

如果需要更个性化的显示效果,可以手动指定刻度间隔(比如每年一个刻度),并调整标签角度:

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

df = pd.read_csv("USO.csv")
df['Date'] = pd.to_datetime(df['Date'])
df = df.set_index('Date')

fig, ax = plt.subplots()
ax.plot(df.index, df['Close'], color='forestgreen')

# 设置X轴主刻度为每年一个
ax.xaxis.set_major_locator(YearLocator())
# 设置日期显示格式为年份
ax.xaxis.set_major_formatter(DateFormatter('%Y'))
# 旋转标签45度避免重叠
plt.xticks(rotation=45)

plt.tight_layout()  # 调整布局,防止标签被图框截断
plt.show()

方法3:直接使用Pandas内置绘图(最简便)

Pandas的plot方法已经内置了日期刻度优化逻辑,无需额外配置就能得到清晰的X轴:

import pandas as pd
import matplotlib.pyplot as plt

df = pd.read_csv("USO.csv")
df['Date'] = pd.to_datetime(df['Date'])
df = df.set_index('Date')

df['Close'].plot(color='forestgreen')
plt.gcf().autofmt_xdate()
plt.show()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 14:25:01