Python 向图形中添加下拉菜单

Python 向图形中添加下拉菜单,python,plotly,plotly-dash,plotly-python,Python,Plotly,Plotly Dash,Plotly Python,我正在尝试向plotly express折线图添加下拉菜单。此菜单将按天、月或年决定X轴组上的日期。这是我现在掌握的代码: import plotly.express as px import pandas as pd def group_dates_by_period(df, column, period): return df.groupby(df[column].dt.to_period(period))['Id Incidencia'].count() periods = [

我正在尝试向plotly express折线图添加下拉菜单。此菜单将按天、月或年决定X轴组上的日期。这是我现在掌握的代码:

import plotly.express as px
import pandas as pd

def group_dates_by_period(df, column, period):
    return df.groupby(df[column].dt.to_period(period))['Id Incidencia'].count()

periods = [('Día', 'D', '%Y-%m-%d'), ('Mes', 'M', '%Y-%m'), ('Año', 'Y', '%Y')]
fig2_data = group_dates_by_period(df, 'Fecha Apertura', periods[0][1])
fig2 = px.line(
                x=fig2_data.index.strftime(periods[0][2]),
                y=fig2_data.values,
                title='Distribución temporal de las incidencias',
                labels={
                    'x': 'Fecha',
                    'y': 'Nº incidencias'
                }
)

buttons = []
for period in periods:
    data = group_dates_by_period(df, 'Fecha Apertura', period[1])
    new_button = {
                    'method': 'restyle',
                    'label': period[0],
                    'args': [{
                                'y': data.values,
                                'x': data.index.strftime(period[2])
                    }]
    }
    buttons.append(new_button)

fig2.update_layout(updatemenus=[dict(active=0, buttons=buttons)])
虽然初始化图表时使用的“按天分组”数据已正确绘制,但当我单击任何下拉选项时,图表将变为空白,X轴设置为[-1,5]

“group_dates_by_period”函数返回的数据是正确的,就像我使用group by month或group by year选项初始化图表一样,它按预期工作。所以我想这一定是dropdwon菜单的问题

数据样本:

{'index': [0,
  1,
  2,
  3,
  4,
  5,
  6,
  7,
  8,
  9,
  10,
  11,
  12,
  13,
  14,
  15,
  16,
  17,
  18,
  19],
 'columns': ['Id Incidencia', 'Fecha Apertura'],
 'data': [['INC000006722157', Timestamp('2020-12-07 12:28:30')],
  ['INC000006722000', Timestamp('2020-12-07 09:52:06')],
  ['INC000006721939', Timestamp('2020-12-07 10:13:06')],
  ['INC000006708347', Timestamp('2020-12-02 09:02:45')],
  ['INC000006723090', Timestamp('2020-12-07 20:37:53')],
  ['INC000006736601', Timestamp('2020-12-12 00:35:16')],
  ['INC000006736721', Timestamp('2020-12-12 00:46:48')],
  ['INC000006724926', Timestamp('2020-12-08 15:21:15')],
  ['INC000006725331', Timestamp('2020-12-08 20:04:14')],
  ['INC000006725229', Timestamp('2020-12-08 18:33:54')],
  ['INC000006722542', Timestamp('2020-12-07 15:52:59')],
  ['INC000006722729', Timestamp('2020-12-07 18:33:22')],
  ['INC000006723246', Timestamp('2020-12-07 23:56:08')],
  ['INC000006722574', Timestamp('2020-12-07 17:11:05')],
  ['INC000006741563', Timestamp('2020-12-14 13:31:05')],
  ['INC000006722571', Timestamp('2020-12-07 17:06:55')],
  ['INC000006741632', Timestamp('2020-12-14 13:44:35')],
  ['INC000006741568', Timestamp('2020-12-14 13:33:40')],
  ['INC000006741636', Timestamp('2020-12-14 13:46:38')],
  ['INC000006741640', Timestamp('2020-12-14 13:51:34')]]}

请提供所述的数据样本,谢谢提示。我的数据集有敏感内容,我不应该共享,所以这里是它的一个小摘录,包含我在代码中使用的两列:时间戳和行标识符@维斯特兰:那更好。尽管在代码片段中包含数据会更好,并确保代码和数据能够良好地一起运行。现在我已经检查了,但它们没有。