如何在Matplotlib中设置X轴为小时刻度并仅显示时分?
如何在Matplotlib的X轴仅显示小时和分钟(格式如00:00、1:00...8:00)
针对你的需求,我们可以借助Matplotlib的日期格式化工具来实现。你的数据已经是datetime索引,所以只需要给X轴指定对应的日期格式和刻度间隔即可,下面是结合你现有代码的完整解决方案:
完整修改后的代码
import pandas as pd import matplotlib.pyplot as plt import matplotlib.dates as mdates # 你的原有时间范围定义 von = pd.to_datetime("08.23.17 00:00", infer_datetime_format=True) # 时间格式:MM.DD.YY HH:MM bis = pd.to_datetime("08.23.17 08:00", infer_datetime_format=True) graph = solardaten[['FriWa_VL','FriWa_RL','FriWa_Vpunkt','Speicher_oben']].loc[von:bis] # 原有样式设置 plt.rcParams.update({'lines.linewidth': 4}) # 增大绘图中的线条宽度 plt.rcParams.update({'font.size': 28}) # 绘制图表 a = graph.plot(figsize=[15,8]) # 核心:设置X轴的时间显示格式和刻度 # 1. 定义日期格式:这里用%H:%M表示24小时制的小时+分钟(如00:00、01:00) # 如果想要不带前导零的小时(如1:00),根据系统调整: # - Linux/macOS: 使用'%-H:%M' # - Windows: 使用'%#H:%M' time_formatter = mdates.DateFormatter('%H:%M') a.xaxis.set_major_formatter(time_formatter) # 2. 设置每小时显示一个刻度,匹配你的00:00到08:00时间范围 hour_locator = mdates.HourLocator(interval=1) a.xaxis.set_major_locator(hour_locator) # 可选:旋转X轴标签,避免文字重叠 plt.xticks(rotation=45) # 显示图表 plt.show()
关键部分说明
DateFormatter:负责定义X轴上时间的显示格式,%H代表两位24小时制的小时(00-23),%M代表两位分钟(00-59)。如果想要更简洁的格式(比如1:00而非01:00),就用对应系统的格式符去掉前导零。HourLocator:控制X轴刻度的间隔,interval=1表示每1小时生成一个刻度,刚好覆盖你需要的00:00到08:00的所有整点时刻。- 旋转标签:当刻度文字较多时,旋转45度可以避免标签重叠,提升可读性,这一步是可选的。
内容的提问来源于stack exchange,提问作者kolja
相关产品推荐
相关产品推荐

