首页 > 解决方案 > 日期/日期时间在 Plotly 中无法正常工作

问题描述

我正在尝试使用 Dash 和 Plotly 创建一个股票投资组合仪表板。我能够使用 go.Scatter 方法成功绘制折线图,​​但现在尝试使用回调函数绘制类似图未成功。不幸的是,x 轴似乎不喜欢我的 x 轴值的日期时间格式,但是当我将值重铸为字符串时它也不接受它。我使用的数据框与创建没有回调函数的简单折线图时使用的数据框完全相同。这是我的数据示例:

日期 价值 资产
2021-01 1.00 一个
2021-02 1.10 一个
2021-03 1.05 一个
2021-04 1.12 一个

这是我的代码:

app = dash.Dash()
date_options = []
for date in df['Date'].unique():
    date_options.append({'label':str(date),'value':date})

app.layout = html.Div([
    dcc.Graph(id='graph'),
    dcc.Dropdown(id='date-picker',options=date_options,value=df['Date'].min())
])

@app.callback(Output('graph', 'figure'),
              [Input('date-picker', 'value')])
def update_figure(selected_date):
    filtered_df = df[df['Date'] >= selected_date]
    traces = []
    for Asset in filtered_df['Asset'].unique():
        df_by_asset = filtered_df[filtered_df['Asset'] == Asset]
        traces.append(go.Scatter(
            x=df_by_asset['Date'],
            y=df_by_asset['Value'],
            mode='markers',
            marker={'size': 15},
            name=Asset
        ))

    return {
        'data': traces,
        'layout': go.Layout(
            xaxis={'title': 'Date'},
            yaxis={'title': 'Portfolio Value'},
            hovermode='closest'
        )
    }

if __name__ == '__main__':
    app.run_server()

我真的很感激任何帮助:)

我的输出如下所示: 在此处输入图像描述

标签: pythonplotlyplotly-dashdashboardplotly-python

解决方案


推荐阅读