Matplotlib: xticks every 15 minutes, starting on the hour

一曲冷凌霜 提交于 2019-12-01 05:01:32

You could tell the MinuteLocator to only use the minutes 0,15,30,45 using the byminute argument.

xlocator = md.MinuteLocator(byminute=[0,15,30,45], interval = 1)

Use Axes.set_xticklabels,

labels = ['04:45', '05:00', '05:15']
plt.gca().set_xticklabels(labels)

which produces,


Shift time to the concurrent quarter-hours,

import datetime

list_dt = [ datetime.datetime(2017,2,15,4,40),
            datetime.datetime(2017,2,15,4,46),
            datetime.datetime(2017,2,15,4,52),
            datetime.datetime(2017,2,15,4,58),
            datetime.datetime(2017,2,15,5,4),
            datetime.datetime(2017,2,15,5,10)]

adjust_list_dt = list()

for dt in list_dt:
    print(dt.minute//15)

    if dt.minute % 15 == 0:
        adjust_minutes = dt.minute
    else:
        adjust_minutes = (dt.minute//15 + 1)*15

    if adjust_minutes == 60:
        adjust_list_dt.append(dt.replace(hour=dt.hour+1, minute=0))
    else:
        adjust_list_dt.append(dt.replace(minute=adjust_minutes))

print(adjust_list_dt)
# Output
'''
[datetime.datetime(2017, 2, 15, 4, 45), 
 datetime.datetime(2017, 2, 15, 5, 0),
 datetime.datetime(2017, 2, 15, 5, 0), 
 datetime.datetime(2017, 2, 15, 5, 0), 
 datetime.datetime(2017, 2, 15, 5, 15), 
 datetime.datetime(2017, 2, 15, 5, 15)]
'''
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!