如何在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
相关产品推荐
相关产品推荐

