用Matplotlib绘制时间戳(小时/分钟/秒) [英] Plotting timestamps (hour/minute/seconds) with Matplotlib

查看:1086
本文介绍了用Matplotlib绘制时间戳(小时/分钟/秒)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想绘制一些时间戳(年月日时分秒格式).我正在使用以下代码,但是它不显示任何时分秒信息,而是显示为00-00-00.我仔细检查了日期数组,如下面的代码片段所示,它们不为零.

I want to plot some timestamps (Year-month-day Hour-Minute-Second format). I am using the following code, however it doesn't show any hour-minute-second information, it shows them as 00-00-00. I double checked my date array, and as you can see from the snippet below, they are not zero.

您是否知道我为什么要获得00-00-00?

Do you have any idea about why I am getting 00-00-00's?

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()

推荐答案

尝试放大图形,您会看到日期时间随着x轴比例的变化而扩展.

Try zooming in on your graph, you will see the datetimes expand as your x axis scale changes.

在matplotlib中绘制unix时间戳

当试图在染色体上绘制阳性选择的热图时,我遇到了类似的烦人的问题.如果我缩小得太远,一切将完全消失!

I had a similarly annoying problem when trying to plot heatmaps of positive selection on chromosomes. If I zoomed out too far things would disappear entirely!

此代码将完全按照您提供的日期绘制日期,但不会在两者之间添加刻度.

edit: This code plots your dates exactly as you give them, but doesn't add ticks in between.

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()

这篇关于用Matplotlib绘制时间戳(小时/分钟/秒)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆