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

如何减少Matplotlib绘制Pandas数据时的X轴刻度数量

解决Matplotlib折线图X轴刻度过多的问题

问题根源

你把time列转成字符串格式的%H:%M:%S后,Matplotlib会把X轴当成分类变量处理,而非时间序列,这就导致常规的时间刻度定位器失效,所以用plt.locator_params()会报错。

两种可行解决方案

方案一:保留datetime类型,自定义刻度格式(推荐)

既让Matplotlib自动选择合适的刻度数量,又能显示成你需要的HH:MM:SS格式:

import matplotlib.pyplot as plt
import matplotlib.dates as mdates

# 确保df_kline_dict_01的'time'列是datetime类型(不要转成字符串)
plt.plot(df_kline_dict_01['time'], df_kline_dict_01['close'], color='green', label='close')

# 设置X轴刻度显示格式为HH:MM:SS
date_formatter = mdates.DateFormatter('%H:%M:%S')
plt.gca().xaxis.set_major_formatter(date_formatter)

# 可选:手动控制刻度间隔,比如每10分钟显示一个刻度
# 如果不想手动设间隔,Matplotlib会自动优化数量
time_locator = mdates.MinuteLocator(interval=10)
plt.gca().xaxis.set_major_locator(time_locator)

plt.xticks(rotation=45, ha='right')
plt.legend()
plt.show()

方案二:已转字符串时,手动指定刻度

如果已经把time列转成了字符串,直接手动挑选要显示的刻度:

import matplotlib.pyplot as plt

plt.plot(df_kline_dict_01['time'], df_kline_dict_01['close'], color='green', label='close')

# 设置间隔,比如每10条数据显示一个刻度
step = 10
# 提取对应的刻度位置和标签
tick_pos = df_kline_dict_01.index[::step]
tick_labels = df_kline_dict_01['time'].iloc[::step]

plt.xticks(tick_pos, tick_labels, rotation=45, ha='right')
plt.legend()
plt.show()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 21:20:24