如何在图表中设置Timestamp按1小时递增并修改X轴步长为1
解决Seaborn时间轴刻度设置问题
针对你提出的两个需求,直接通过matplotlib的日期刻度工具修改即可(Seaborn基于matplotlib实现),具体方案如下:
修改后的完整代码
import seaborn as sns import pandas as pd import matplotlib.dates as mdates import matplotlib.pyplot as plt # 假设start_time和end_time已提前定义 price_Graph = sns.lineplot(x='TIMESTAMP', y='ASK', data=price_graph_df) price_Graph.tick_params(axis='x', rotation=45) price_Graph.set_xlim([pd.to_datetime(start_time, format='%Y-%m-%d %H:%M:%S'), pd.to_datetime(end_time, format='%Y-%m-%d %H:%M:%S')]) # 配置X轴按1小时递增的刻度 # 主刻度定位器:每1小时生成一个刻度 price_Graph.xaxis.set_major_locator(mdates.HourLocator(interval=1)) # 刻度格式:自定义时间显示样式,可按需调整 price_Graph.xaxis.set_major_formatter(mdates.DateFormatter('%Y-%m-%d %H:%M')) # 调整布局避免标签截断 plt.tight_layout() plt.show()
关键代码说明
mdates.HourLocator(interval=1):指定X轴主刻度每1小时生成一个,同时解决「Timestamp按1小时递增」和「步长从2改为1」的需求。mdates.DateFormatter('%Y-%m-%d %H:%M'):自定义时间刻度的显示格式,可根据需求简化,比如只显示小时和分钟用'%H:%M',显示日期加小时用'%m-%d %H'。plt.tight_layout():自动调整图表布局,防止旋转后的X轴标签被遮挡。
补充说明
即使数据时间范围跨天数,该设置也会自动覆盖set_xlim定义的区间内所有小时刻度,适配你的时间范围需求。
内容的提问来源于stack exchange,提问作者Yang Wentao
相关产品推荐
相关产品推荐

