我目前正在尝试设置一个具有一些绘图功能的jupyter笔记本。对于后者,我想测试一下,数据来自PostgreSQL服务器。我使用df = pd.read_sql(query.statement, query.session.bind)
将数据直接提取到pandas数据框中。
现在,我想将多个时间序列绘制成一个单独的图。因此,x轴是一系列日期时间对象(df['timestamp']
),y是浮点数(df['data']
)。从不同数据框中绘制两个数据集的工作方式如下:
import pandas as pd
import plotly.graph_objs as go
import plotly.offline as py
trace1 = go.Scatter(x = df1['timestamp'],y = df1['data'])
trace2 = go.Scatter(x = df2['timestamp'],y = df2['data'])
data = [trace1, trace2]
fig = dict(data=data)
py.iplot(fig)
数据代表两个测量时间序列。这两个数据集记录在不同的日子,但我对时间比较感兴趣。所以我的想法是通过减法删除时间偏差(第一个时间戳df['timestamp'][0]
或最早的时间戳min(df['timestamp'])
):
df['timestamp'] = df['timestamp'] - df['timestamp'][0]
但是,这会产生一系列pandas._libs.tslib.Timedelta对象。在一个图中绘制多个timedelta系列可以使用matplotlib,但不能用于绘图。出于某种原因,两个图形奇怪地连接在一起(参见图片,如果有的话),尽管它们应该出现在相同的时间尺度上。有什么想法吗?