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()
總結
以上是生活随笔為你收集整理的python 数学建模、时间戳_python-在matplotlib中绘制Unix时间戳的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python重命名异常_python异常
- 下一篇: 安卓实训项目源码_综合性项目:在线学习考