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

x轴为时间对象时如何减少Matplotlib绘图的xticks标签数量

Matplotlib 时间轴设置5-6个x刻度的实现方法

你的代码未对x轴刻度数量做主动控制,matplotlib默认自动生成的刻度密度过高,才会出现标签重叠挤在一起的问题,按以下修改即可实现需求:

  • 首先将读取到的Time列转为pandas标准datetime格式,避免日期刻度工具失效
  • 调用matplotlib.dates内置的自动刻度定位器,直接限制最大刻度数量为6,即可自动均匀生成5-6个不重叠的刻度
  • 搭配统一的日期格式化工具,避免刻度标签显示格式混乱

修改后的完整可运行代码:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.dates as md

plt.rcParams["figure.figsize"] = [7.00, 3.50]
plt.rcParams["figure.autolayout"] = True

columns = ["Time", "SO2_inlet", "SO2_outlet"]
df = pd.read_csv("../code_thesis/0713_.25g.csv", usecols=columns)
# 转换时间列为标准日期格式
df["Time"] = pd.to_datetime(df["Time"])
print("Contents in csv file:\n", df)

fig, ax = plt.subplots()
ax.plot(df.Time, df.SO2_inlet, label="SO2_inlet")
ax.plot(df.Time, df.SO2_outlet, label="SO2_outlet")

# 配置x轴:最多显示6个刻度,自动均匀分布
x_locator = md.AutoDateLocator(maxticks=6)
ax.xaxis.set_major_locator(x_locator)
# 配置刻度标签格式,这里设为「小时:分钟」,可按需改为%m-%d %H:%M 显示月日
x_formatter = md.DateFormatter("%H:%M")
ax.xaxis.set_major_formatter(x_formatter)

plt.legend()
plt.show()

可选调整方案

如果你需要固定刻度间隔(比如每间隔30分钟/1小时打一个刻度),可以把AutoDateLocator替换为对应粒度的定位器,手动设置间隔凑够5-6个刻度即可,示例:

  • 每20分钟一个刻度:md.MinuteLocator(interval=20)
  • 每1小时一个刻度:md.HourLocator(interval=1)

原绘图效果参考:
x轴刻度密集重叠的原图

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 17:45:37