首页 > 解决方案 > 如何用 plotly 可视化时间序列?

问题描述

我有一个包含两个变量的数据集:clicks (object)session_time (datetime64[ns])

我正在尝试通过使用 plotly 来绘制时间序列。但是输出看起来很奇怪,我找不到原因。

这是我试图绘制它的代码:

import plotly.offline as pyo
import plotly.graph_objs as go
import numpy as numpy

trace = go.Scatter(x=list(df.session_time),
                   y=list(df.clicks), line=dict(color='red'))

dat = [trace]
layout = dict(
    title='Clicks on books',
    xaxis=dict(
        rangeselector=dict(
            buttons=list([
                dict(step='all')
            ])
        ),
        rangeslider=dict(
            visible = True
        ),
        type='date'
    )
)

fig = dict(data=dat, layout=layout)
pyo.iplot(fig)

这里的输出是: 在此处输入图像描述

知道我缺少什么吗?

标签: pythonjupyter-notebooktime-seriesplotly

解决方案


go.Scatter正在将您的数据绘制为散点图,并且由于您的日期时间数据无序,因此将其绘制为无序。将您的session_time列转换为日期时间后,按

df.sort_values(by=['session_time'], inplace=True)

将解决您的问题。这可能不是最优雅的解决方案,但它确实有效。

排序日期时间


推荐阅读