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

如何在Matplotlib绘图的X轴同时显示日期与时间?

解决Matplotlib X轴仅显示时间不显示日期的问题

你遇到的是Matplotlib自动日期格式化的常见问题——当时间跨度较大时,它会自动隐藏日期只显示时间,我们可以通过手动指定X轴的日期格式化规则来解决这个问题,具体步骤如下:

  • 第一步:定义你想要的日期时间格式,使用mdates.DateFormatter,格式字符串和你读取数据时的'%d/%m/%Y %H:%M'保持一致即可,这样能保证X轴显示完整的日期和时间。
  • 第二步:将这个格式化器应用到X轴上,同时可以旋转X轴标签避免重叠,提升可读性。

下面是修改后的完整代码,我标注了新增的关键部分:

import matplotlib.pyplot as plt
import csv
import datetime
import matplotlib.dates as mdates
import re

Time = []
station12SRV = []
station18SRV = []

with open('Book2.csv','r') as csvfile:
    plots = csv.reader(csvfile, delimiter=',')
    for row in plots:
        datetime_format = '%d/%m/%Y %H:%M'
        date_time_data = datetime.datetime.strptime(row[0],datetime_format)
        Time.append(date_time_data)
        station12SRV.append(float(row[1]))
        station18SRV.append(float(row[2]))

plt.plot(Time,station12SRV, label='Tracker Station 12')
plt.plot(Time,station18SRV, label='Tracker Station 18')
plt.xlabel('Date & Time')
plt.ylabel('Pressure (Torr)')
plt.yscale('log')
#plt.title('SRV Plot vs Time')
plt.legend()

# --- 新增的X轴格式设置代码 ---
# 定义日期时间格式化器
date_formatter = mdates.DateFormatter('%d/%m/%Y %H:%M')
# 应用到X轴
plt.gca().xaxis.set_major_formatter(date_formatter)
# 旋转X轴标签,避免重叠
plt.xticks(rotation=45)
# --- 新增代码结束 ---

plt.tight_layout()  # 自动调整布局,防止标签被图框截断
plt.savefig('trackers_srv.pdf')
#plt.show()

补充说明:

  • plt.tight_layout()是可选但实用的设置,它能确保X轴的日期时间标签不会被图框边缘截断,显示更完整。
  • 如果你的时间数据跨度非常大(比如超过一周),也可以根据需求调整格式字符串,比如改成'%Y-%m-%d %H:%M',或者搭配mdates.AutoDateLocator()来动态调整刻度密度,但你的场景用固定格式就完全足够了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 04:51:05