如何在Matplotlib中设置X轴时间戳格式为%Y-%m-%d %H:%M并指定刻度
解决Matplotlib时间轴自定义刻度与格式的问题
我来帮你搞定这个时间轴显示的问题~默认情况下Matplotlib会自动根据数据范围生成刻度,所以才会出现那些每隔5分钟的标签。要实现你想要的效果,我们需要手动指定刻度位置,同时设置自定义的时间格式。
修改后的完整代码
import datetime import matplotlib.pyplot as plt from matplotlib import style from matplotlib.dates import DateFormatter # 导入时间格式化工具 style.use('fivethirtyeight') # 原始数据 ts = [datetime.datetime(2018, 5, 23, 14, 0), datetime.datetime(2018, 5, 23, 14, 15), datetime.datetime(2018, 5, 23, 14, 30)] values = [3, 7, 6] plt.plot(ts, values, 'o-') # 1. 指定X轴要显示的刻度位置(就是你给定的三个时间点) plt.xticks(ts) # 2. 创建时间格式化器,设置你需要的格式 date_formatter = DateFormatter("%Y-%m-%d %H:%M") # 3. 获取当前坐标轴,应用格式化器 ax = plt.gca() ax.xaxis.set_major_formatter(date_formatter) # 可选:旋转刻度标签,避免重叠(如果标签较长的话很有用) plt.xticks(rotation=45) plt.tight_layout() # 自动调整布局,防止标签被截断 plt.show()
关键步骤解释
- 指定刻度位置:
plt.xticks(ts)强制Matplotlib只使用你提供的ts列表中的时间点作为X轴刻度,替代自动生成的刻度。 - 定义时间格式:
DateFormatter("%Y-%m-%d %H:%M")创建格式化器,设置你需要的年-月-日 时:分显示格式。 - 应用格式化器:
ax.xaxis.set_major_formatter(date_formatter)把自定义格式应用到X轴,让刻度按指定样式显示。 - 优化可读性:
plt.xticks(rotation=45)旋转标签避免重叠,plt.tight_layout()自动调整布局防止标签被截断。
这样修改后,你的图表X轴就只会显示2018-05-23 14:00、2018-05-23 14:15和2018-05-23 14:30这三个指定的时间点,格式也完全符合你的要求啦~
内容的提问来源于stack exchange,提问作者Liverpool Bitlas
相关产品推荐
相关产品推荐

