在xticks matplotlib中舍入日期时间

时间:2017-10-03 17:23:42

标签: python matplotlib

我试图绘制一些时间间隔:

import matplotlib.pyplot as plt
plt.hlines(1,v1,v2)
myFmt = DateFormatter('%H:%M:%S')

ax.xaxis.set_major_formatter(myFmt)

ax.xaxis.set_major_locator(SecondLocator(interval=2000)) 

,其中

v1=numpy.datetime64('2017-09-13T05:12:56.089000000')
v2=numpy.datetime64('2017-09-13T11:51:30.089000000')

然后我得到: Result 这非常好。 但是,为了便于阅读,我想在圆形时间内打勾,例如: 05.00,06.00 ...... 但是,我仍然需要准确,所以我需要在图中添加相同格式的开始和结束的确切时间。 一般的解决方案会很棒,因为我可能需要在几个月后重复这些技巧等等。

1 个答案:

答案 0 :(得分:1)

为了获得每小时滴答,<div class="wrapper"> <header class="header"> </header><!-- .header--> <div class="middle"> <div class="container"> <main class="content"> </main><!-- .content --> </div><!-- .container--> <aside class="left-sidebar"> <nav class="nav"> </nav> </aside><!-- .left-sidebar --> </div><!-- .middle--> <footer class="footer"> </footer><!-- .footer --> </div><!-- .wrapper --> .nav { background: #d2d3d5; height: 60px; } .header { height: 30px; background: #1378a9; text-align: right; color: white; } .middle { border-left: 640px solid #B5E3FF; position: relative; } .middle:after { display: table; clear: both; content: ''; } .container { width: 100%; float: left; overflow: hidden; margin-right: -100%; } .content { padding: 0 20px; padding-bottom:40px; } .left-sidebar { float: left; width: 640px; position: relative; background: #ebf2f5; left: -640px; min-height: 700px; border-right: 1px solid #1378a9; } .footer { height: 40px; background: #1378a9; text-align: right; color: white; position:absolute; bottom:0; width: 100%; } 肯定不是最佳选择。而是使用SecondLocator

HourLocator

Anno0tating有点困难,您需要将datetime64转换为datetime,以便可以使用与轴相同的格式化程序对其进行格式化。 (有关日期时间转换的更多信息,请参阅例如this useful post

import numpy as np
import matplotlib.dates as mdates
import matplotlib.pyplot as plt

v1=np.datetime64('2017-09-13T05:12:56.089000000')
v2=np.datetime64('2017-09-13T11:51:30.089000000')

plt.hlines(1,v1,v2)
myFmt = mdates.DateFormatter('%H:%M:%S')

plt.gca().xaxis.set_major_formatter(myFmt)
plt.gca().xaxis.set_major_locator(mdates.HourLocator()) 

plt.show()

enter image description here