python 数学建模、时间戳_python-在matplotlib中绘制Unix时间戳

可以调用matplotlib.dates.date2num,其中plt.plot是datetime.datetime对象的列表。 该图将包括xticks,格式为3006131943328187187395,并且在您放大时会自动更改为显示小时,分钟,秒的数字。

但是,听起来您想要比这更多的控制。 也许它没有以您希望的比例显示时,分,秒。

在这种情况下,您可以设置自己的日期格式化程序:

ax=plt.gca()

xfmt = md.DateFormatter('%Y-%m-%d %H:%M:%S')

ax.xaxis.set_major_formatter(xfmt)

不幸的是,如果将matplotlib.dates.date2num对象传递给3006131943328187187,则matplotlib自动选择的xticks似乎总是具有等于零的秒数。 例如,如果您运行

import matplotlib.pyplot as plt

import matplotlib.dates as md

import numpy as np

import datetime as dt

import time

n=20

duration=1000

now=time.mktime(time.localtime())

timestamps=np.linspace(now,now+duration,n)

dates=[dt.datetime.fromtimestamp(ts) for ts in timestamps]

values=np.sin((timestamps-now)/duration*2*np.pi)

plt.subplots_adjust(bottom=0.2)

plt.xticks( rotation=25 )

ax=plt.gca()

xfmt = md.DateFormatter('%Y-%m-%d %H:%M:%S')

ax.xaxis.set_major_formatter(xfmt)

plt.plot(dates,values)

plt.show()

那么您会获得格式正确的日期,但是所有xtick秒均为零。

那么解决方案是什么?

如果您自己转换时间戳-> datetime.datetime对象-> matplotlib datenums,并将datenums传递给matplotlib.dates.date2num,则保留秒数。

PS。 “ matplotlib datenum”是指matplotlib.dates.date2num返回的数字类型。

import matplotlib.pyplot as plt

import matplotlib.dates as md

import numpy as np

import datetime as dt

import time

n=20

duration=1000

now=time.mktime(time.localtime())

timestamps=np.linspace(now,now+duration,n)

dates=[dt.datetime.fromtimestamp(ts) for ts in timestamps]

datenums=md.date2num(dates)

values=np.sin((timestamps-now)/duration*2*np.pi)

plt.subplots_adjust(bottom=0.2)

plt.xticks( rotation=25 )

ax=plt.gca()

xfmt = md.DateFormatter('%Y-%m-%d %H:%M:%S')

ax.xaxis.set_major_formatter(xfmt)

plt.plot(datenums,values)

plt.show()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值