python-3.x - 如何在时间序列中使用数据游标显示(格式化)纪元到完整日期?
问题描述
我有一个自定义格式化函数来显示绘图中每个点的 Y 和 X 坐标。由于绘图是时间序列,我的 x 轴由日期组成,这使我很难显示与绘图显示完全相同的日期。
我的代码:
%matplotlib notebook
import matplotlib.pyplot as plt
import matplotlib.animation as animation
import numpy as np
import matplotlib.dates as mdates
from matplotlib.dates import date2num
from dateutil import parser
from bokeh.plotting import figure
import sqlite3
from mpldatacursor import datacursor
import pandas as pd
import datetime as dt
from datetime import datetime
fig = plt.figure(figsize = (10,4))
ax1 = fig.add_subplot(111)
ax1.grid(True)
plt.ion()
def animate(i):
datas = []
dates = []
con = sqlite3.connect('edgedb')
c = con.cursor()
c.execute('SELECT data, timestamp FROM edgedata')
data = c.fetchall()
for row in data:
datas.append(pd.to_datetime(row[1], format = '%Y-%m-%d %H:%M:%S').time())
dates.append(float(row[0]))
ax1.clear()
ax1.plot_date(x = datas, y = dates, color = 'darkgreen', ls='-', marker='o')
ax1.set_xticks(datas)
plt.xticks(rotation=60, ha='right')
plt.subplots_adjust(bottom=0.30)
plt.gca().xaxis.set_major_locator(mdates.AutoDateLocator())
#ax1.xaxis.set_major_formatter(mdates.DateFormatter('$H:%M:%S'))
ax1.grid(True)
plt.ion()
def print_coords(**kwargs):
return 'Valor medido : {y:.6f} às {x:s}'.format(y=kwargs['y'],
x=dt.datetime.fromtimestamp(kwargs['x']).strftime('%Y-%m-%d %H:%M:%S'))
datacursor(ax1, formatter = print_coords)
ani = animation.FuncAnimation(fig, animate, interval=1000)
plt.show()
这样,光标正确显示了我的 Y 值,但我的 X 在第一点显示为“1970-01-01 11:59:03”,随着它的前进而增加。
@edit:正如我的朋友 Yuca 所说,当它们出现在我的数据库中时,我给出了一些分数。
(2.609698591082275, '2019-08-01 14:59:02')
(1.576077072171736, '2019-08-01 15:01:42')
(2.732782944225141, '2019-08-01 15:37:35')
(2.121527818052438, '2019-08-01 15:37:56')
(2.296660329191338, '2019-08-01 15:38:37')
(1.176709831423572, '2019-08-01 15:42:38')
(1.434814273623745, '2019-08-01 16:50:06')
(2.276750775178628, '2019-08-01 16:55:19')
提前致谢!
解决方案
推荐阅读
- html - Why is translateZ not being applied to the direct parent or its parent?
- ubuntu - 更新后 Gitlab-ctl 重新配置失败:未定义的方法 'downcase'
- postgresql - 日期类型的输入语法无效
- typescript - 如何在 VsCode 中加速 Typescript Intelisense?
- c - 为什么在 C 中使用 printf 时输出奇怪?
- ios - 如何在 FirebaseDatabase 中同时显示多个项目
- flutter - Flutter 2 个月后突然无法构建应用
- python - 获取属性值
- api - Acumatica。更新客户信用额度时出错
- python-3.x - Postgres sql 插入覆盖模式