#python #plotly-dash
#python #plotly-dash
Вопрос:
Я пытаюсь использовать dcc.DatePickerRange
в dash, чтобы позволить пользователю вводить дату начала и дату окончания, которые будут фильтровать фрейм данных, а затем обновлять график. Однако я продолжаю получать следующую ошибку
Ошибка типа: тип объекта отсутствует
Ниже приведен мой код. Не уверен, где я ошибаюсь. Буду признателен за любую помощь, спасибо.
import dash
import dash_core_components as dcc
import dash_html_components as html
from dash.dependencies import Input, Output
import plotly.plotly as py
import plotly.graph_objs as go
import sqlite3
import pandas as pd
from functools import reduce
import datetime as dt
conn = sqlite3.connect('paychecks.db')
df_ct = pd.read_sql('SELECT * FROM CheckTotal',conn)
df_earn = pd.read_sql('SELECT * FROM Earnings', conn)
df_whold = pd.read_sql('SELECT * FROM Withholdings', conn)
data_frames = [df_ct, df_earn, df_whold]
df_paystub = reduce(lambda left,right: pd.merge(left,right,on=['Date'], how='outer'), data_frames)
df_paystub['Date'] = pd.to_datetime(df_paystub['Date'], format='%Y-%m-%d')
dcc.DatePickerRange(
id='date-picker-range',
start_date_placeholder_text="Start Date",
end_date_placeholder_text="End Date",
calendar_orientation='vertical',
)
@app.callback(
dash.dependencies.Output('pay', 'figure'),
[dash.dependencies.Input('date-picker-range', 'start_date'),
dash.dependencies.Input('date-picker-range', 'end_date')]
)
def figupdate(start_date, end_date):
df = df_paystub
df['Date'] = pd.to_datetime(df['Date'], format='%Y-%m-%d')
df = df[(df['Date'] > start_date) amp; (df['Date'] < end_date)]
figure={
'data': [
go.Bar(
x = df['Date'],
y = df['CheckTotal'],
name = 'Take Home Pay',
),
go.Bar(
x = df['Date'],
y = df['EarnTotal'],
name = 'Earnings',
)
],
'layout': go.Layout(
title = 'Take Home Pay vs. Earnings',
barmode = 'group',
yaxis = dict(title = 'Pay (U.S. Dollars)'),
xaxis = dict(title = 'Date Paid')
)
}
return figure
Ответ №1:
Оказывается, мне нужно было добавить start_date
и end_date
атрибут dcc.DatePickerRange
.
dcc.DatePickerRange(
id='date-picker-range',
start_date_placeholder_text="Start Date",
end_date_placeholder_text="End Date",
start_date=df_paystub['Date'].iloc[0],
end_date=df_paystub['Date'].iloc[-1],
)
Комментарии:
1. Я рад, что вы нашли решение. Я только что создал руководство по Dash datepicker на случай, если это поможет вам или будущим пользователям. youtu.be/5uwxoxaPD8M