使用Matplotlib绘制时间戳(小时/分钟/秒)

时间:2013-07-17 20:41:51

标签: python matplotlib timestamp

我想绘制一些时间戳(年 - 月 - 日小时 - 分 - 秒格式)。我使用以下代码,但它没有显示任何小时 - 分钟 - 秒信息,它显示为00-00-00。我仔细检查了我的日期数组,正如你从下面的代码片段中看到的那样,它们不是零。

你知道我为什么得到00-00-00's吗?enter image description here

import matplotlib.pyplot as plt
import matplotlib.dates as md
import dateutil

dates = [dateutil.parser.parse(s) for s in datestrings]
# datestrings = ['2012-02-21 11:28:17.980000', '2012-02-21 12:15:32.453000', '2012-02-21 23:26:23.734000', '2012-02-26 17:42:15.804000']
plt.subplots_adjust(bottom=0.2)
plt.xticks( rotation= 80 )
ax=plt.gca()
xfmt = md.DateFormatter('%Y-%m-%d %H:%M:%S')
ax.xaxis.set_major_formatter(xfmt)
plt.plot(dates[0:10],plt_data[0:10], "o-")
plt.show()

2 个答案:

答案 0 :(得分:8)

尝试放大图表时,您会看到日期时间随着x轴刻度的变化而变大。

plotting unix timestamps in matplotlib

当我试图绘制染色体上阳性选择的热图时,我遇到了类似的恼人问题。如果我缩小太远,事情就会彻底消失!

编辑:此代码完全按照您的提示绘制日期,但不会在两者之间添加刻度。

import matplotlib.pyplot as plt
import matplotlib.dates as md
import dateutil

datestrings = ['2012-02-21 11:28:17.980000', '2012-02-21 12:15:32.453000', '2012-02-21 23:26:23.734000', '2012-02-26 17:42:15.804000']
dates = [dateutil.parser.parse(s) for s in datestrings]

plt_data = range(5,9)
plt.subplots_adjust(bottom=0.2)
plt.xticks( rotation=25 )

ax=plt.gca()
ax.set_xticks(dates)

xfmt = md.DateFormatter('%Y-%m-%d %H:%M:%S')
ax.xaxis.set_major_formatter(xfmt)
plt.plot(dates,plt_data, "o-")
plt.show()

答案 1 :(得分:1)

我可以告诉你为什么它显示00:00:00。这是因为那是特定日子的开始时间。例如,一个时间段是2012-02-22 00:00:00(2012-02-22午夜12点),另一个是2012-02-23 00:00:00(2012-02-23午夜12点) )。

未显示这两次之间的时间戳。

我自己想弄清楚如何在这些时间之间显示滴答声。