Панель инструментов (тире) не отображает графику ⇐ Python
-
Гость
Панель инструментов (тире) не отображает графику
несмотря на то, что код не содержит явных ошибок, созданная кодом информационная панель не отображает графику так, как предполагалось. Как я могу это исправить? Извините за плохой английский. Большое спасибо! Вот код:
тире импорта из тире импорта DCC из тире импортировать HTML из Dash.зависимостей импортировать ввод, вывод импортировать панд как pd импортируйтеplotly.graph_objs как идти импортироватьplotly.express как px # Загрузите данные с помощью панд data = pd.read_csv('https://cf-courses-data.s3.us.cloud-obj ... _sales.csv') # Инициализируем приложение Dash приложение = тире.Дэш() # Установите заголовок панели инструментов app.title = "Панель статистики продаж автомобилей" #------------------------------------------------- -------------------------------- # Создайте параметры выпадающего меню dropdown_options = [ {'label': 'Годовая статистика', 'value': 'Годовая статистика'}, {'label': 'Статистика периода рецессии', 'value': 'Статистика периода рецессии'} ] # Список лет year_list = [i для i в диапазоне (1980, 2024, 1)] #------------------------------------------------- -------------------------------------- # Создаем макет приложения app.layout = html.Div([ #TASK 2.1 Добавить заголовок на панель мониторинга html.H1("Панель статистики продаж автомобилей", style={'textAlign': 'center', 'color': '#503D36', 'font-size': 24} #Может включать стиль для заголовка ), #TASK 2.2: Добавьте два раскрывающихся меню html.Div([html.Label("Выбрать статистику:"), dcc.Dropdown(id='dropdown-statistics', параметры = dropdown_options, value='Годовая статистика', Placeholder='Выберите тип отчета' ) ]), html.Div(dcc.Dropdown(id='select-year', options=[{'label': i, 'value': i} для i вyear_list], значение = '2010' ) ), #TASK 2.3: Добавьте раздел для отображения вывода html.Div([ html.Div(id='output-container-yearly', className = 'диаграмма-сетка' ) ]) ]) #ЗАДАЧА 2.4: Создание обратных вызовов # Определите функцию обратного вызова для обновления входного контейнера на основе выбранной статистики @app.callback(Output(comComponent_id='select-year',Component_property='options'), Вход (comComponent_id = 'выпадающий список-статистика', компонент_свойство = 'значение') ) Защиту update_input_container (выбранная_статистика): if selected_statistics == 'Годовая статистика': return [{'label': i, 'value': i} для i в списке_годов] еще: возвращаться [] #Обратный вызов для построения графика # Определите функцию обратного вызова для обновления входного контейнера на основе выбранной статистики @app.callback( Output(comComponent_id='output-container-yearly',Component_property='дети'), [Input(comComponent_id='выбрать-год', компонент_свойство='значение'), Input(comComponent_id='выпадающий список-статистика', компонент_свойство='значение')] ) Защиту update_output_container (тип_отчета, входной_год): if report_type == 'Статистика периода рецессии': # Фильтрация данных по периодам рецессии рецессия_данные = данные[данные['Рецессия'] == 1] #ЗАДАЧА 2.5: Создание и отображение графиков для статистики отчета о рецессии # График 1. Продажи автомобилей колеблются в период рецессии (по годам). #use groupby для создания соответствующих данных для построения графиков Yearly_rec = рецессия_data.groupby('Год')['Automobile_Sales'].mean().reset_index() R_chart1 = dcc.Graph(figure = px.line(yearly_rec, х = 'Год', y = 'Продажи_автомобилей', title="Средние колебания продаж автомобилей в период рецессии" ) ) # График 2. Рассчитайте среднее количество проданных автомобилей по типам транспортных средств. # используйте groupby для создания соответствующих данных для построения графика средние_продажи = рецессия_данные.groupby('Тип_транспортного средства')['Продажи_автомобилей'].mean().reset_index() R_chart2 = dcc.Graph(figure = px.bar(average_sales, x = 'Тип_транспортного средства', y = 'Продажи_автомобилей', title="Среднее количество продаж автомобилей по транспортным средствам" ) ) # График 3. Круговая диаграмма, показывающая долю общих расходов по типам транспортных средств во время рецессии. # используйте groupby для создания соответствующих данных для построения графика exp_rec = спад_данных.groupby('Тип_транспортного средства')['Рекламные_расходы'].sum().reset_index() R_chart3 = dcc.Graph(figure = px.pie(exp_rec, значения = 'Рекламные расходы', имена = 'Тип_Транспортного средства', title="Круговая диаграмма, показывающая долю общих расходов по типам транспортных средств во время рецессии" ) ) # Постройте гистограмму 4, показывающую влияние уровня безработицы на тип транспортного средства и продажи. unemploy_sales = рецессия_data.groupby('Тип_транспортного средства')[['unemployment_rate','Automobile_Sales']].sum().reset_index() R_chart4 = dcc.Graph(figure = px.bar(unemploy_sales, x = 'уровень безработицы', y = 'Продажи_автомобилей', цвет = 'Тип_Транспортного средства' ) ) # возвращаться [ # html.Div(className='chart-item', Children=[html.Div(дети=R_chart1),html.Div(дети=R_chart3)]), # html.Div(className='chart-item', Children=[html.Div(дети=R_chart2),html.Div(дети=R_chart4)]) # ] возвращаться [ html.Div(className='chart-item', Children=R_chart1), html.Div(className='chart-item', Children=R_chart2), html.Div(className='chart-item', Children=R_chart3), html.Div(className='chart-item', Children=R_chart4) ] # ЗАДАЧА 2.6: Создание и отображение графиков для статистики годового отчета # Графики годового статистического отчета elif (input_year и report_type == 'Годовая статистика'): годовые_данные = данные[данные['Год'] == int(input_year)] # Постройте график 1. Годовые продажи автомобилей с использованием линейного графика за весь период. yas = data.groupby('Year')['Automobile_Sales'].mean().reset_index() Y_chart1 = dcc.Graph(figure=px.line(yas, х = 'Год', y = 'Продажи_автомобилей', title='Среднегодовые продажи автомобилей' ) ) # Постройте график 2. Общий объем продаж автомобилей за месяц, используя линейный график. mas = data.groupby('Месяц')['Automobile_Sales'].sum().reset_index() Y_chart2 = dcc.Graph(figure=px.line(mas, х = 'Месяц', y = 'Продажи_автомобилей', title='Среднемесячные продажи автомобилей' ) ) # Постройте гистограмму среднего количества автомобилей, проданных в течение данного года. avr_vdata =yearly_data.groupby('Месяц')['Automobile_Sales'].mean().reset_index() Y_chart3 = dcc.Graph(figure=px.bar(avr_vdata, х = 'Месяц', y = 'Продажи_автомобилей', title='Среднее количество автомобилей, проданных по типам транспортных средств за год {}'.format(input_year) ) ) # Постройте общие расходы на рекламу для каждого автомобиля с помощью круговой диаграммы. exp_data =yearly_data.groupby('Тип_транспортного средства')['Расходы_на рекламу'].sum().reset_index() Y_chart4 = dcc.Graph(figure = px.pie(exp_data, значения = 'Рекламные расходы', имена = 'Тип_Транспортного средства', title="Круговая диаграмма общих расходов по типам транспортных средств" ) ) #ЗАДАЧА 2.6: Возврат графиков для отображения годовых данных # возвращаться [ # html.Div(className='chart-item', Children=[html.Div(дети=Y_chart1),html.Div(дети=Y_chart3)]), # html.Div(className='chart-item', Children=[html.Div(дети=Y_chart2),html.Div(дети=Y_chart4)]) # ] возвращаться [ html.Div(className='chart-item', Children=Y_chart1), html.Div(className='chart-item', Children=Y_chart2), html.Div(className='chart-item', Children=Y_chart3), html.Div(className='chart-item', Children=Y_chart4) ] еще: return html.Div('Выберите тип отчета и год для просмотра статистики.') # Запустите приложение Dash если __name__ == '__main__': app.run_server(debug=True, use_reloader=False) Я пробовал отладку, распечатывая каждую часть кода, но это не похоже на явную ошибку, просто графические функции вызываются неправильно.
несмотря на то, что код не содержит явных ошибок, созданная кодом информационная панель не отображает графику так, как предполагалось. Как я могу это исправить? Извините за плохой английский. Большое спасибо! Вот код:
тире импорта из тире импорта DCC из тире импортировать HTML из Dash.зависимостей импортировать ввод, вывод импортировать панд как pd импортируйтеplotly.graph_objs как идти импортироватьplotly.express как px # Загрузите данные с помощью панд data = pd.read_csv('https://cf-courses-data.s3.us.cloud-obj ... _sales.csv') # Инициализируем приложение Dash приложение = тире.Дэш() # Установите заголовок панели инструментов app.title = "Панель статистики продаж автомобилей" #------------------------------------------------- -------------------------------- # Создайте параметры выпадающего меню dropdown_options = [ {'label': 'Годовая статистика', 'value': 'Годовая статистика'}, {'label': 'Статистика периода рецессии', 'value': 'Статистика периода рецессии'} ] # Список лет year_list = [i для i в диапазоне (1980, 2024, 1)] #------------------------------------------------- -------------------------------------- # Создаем макет приложения app.layout = html.Div([ #TASK 2.1 Добавить заголовок на панель мониторинга html.H1("Панель статистики продаж автомобилей", style={'textAlign': 'center', 'color': '#503D36', 'font-size': 24} #Может включать стиль для заголовка ), #TASK 2.2: Добавьте два раскрывающихся меню html.Div([html.Label("Выбрать статистику:"), dcc.Dropdown(id='dropdown-statistics', параметры = dropdown_options, value='Годовая статистика', Placeholder='Выберите тип отчета' ) ]), html.Div(dcc.Dropdown(id='select-year', options=[{'label': i, 'value': i} для i вyear_list], значение = '2010' ) ), #TASK 2.3: Добавьте раздел для отображения вывода html.Div([ html.Div(id='output-container-yearly', className = 'диаграмма-сетка' ) ]) ]) #ЗАДАЧА 2.4: Создание обратных вызовов # Определите функцию обратного вызова для обновления входного контейнера на основе выбранной статистики @app.callback(Output(comComponent_id='select-year',Component_property='options'), Вход (comComponent_id = 'выпадающий список-статистика', компонент_свойство = 'значение') ) Защиту update_input_container (выбранная_статистика): if selected_statistics == 'Годовая статистика': return [{'label': i, 'value': i} для i в списке_годов] еще: возвращаться [] #Обратный вызов для построения графика # Определите функцию обратного вызова для обновления входного контейнера на основе выбранной статистики @app.callback( Output(comComponent_id='output-container-yearly',Component_property='дети'), [Input(comComponent_id='выбрать-год', компонент_свойство='значение'), Input(comComponent_id='выпадающий список-статистика', компонент_свойство='значение')] ) Защиту update_output_container (тип_отчета, входной_год): if report_type == 'Статистика периода рецессии': # Фильтрация данных по периодам рецессии рецессия_данные = данные[данные['Рецессия'] == 1] #ЗАДАЧА 2.5: Создание и отображение графиков для статистики отчета о рецессии # График 1. Продажи автомобилей колеблются в период рецессии (по годам). #use groupby для создания соответствующих данных для построения графиков Yearly_rec = рецессия_data.groupby('Год')['Automobile_Sales'].mean().reset_index() R_chart1 = dcc.Graph(figure = px.line(yearly_rec, х = 'Год', y = 'Продажи_автомобилей', title="Средние колебания продаж автомобилей в период рецессии" ) ) # График 2. Рассчитайте среднее количество проданных автомобилей по типам транспортных средств. # используйте groupby для создания соответствующих данных для построения графика средние_продажи = рецессия_данные.groupby('Тип_транспортного средства')['Продажи_автомобилей'].mean().reset_index() R_chart2 = dcc.Graph(figure = px.bar(average_sales, x = 'Тип_транспортного средства', y = 'Продажи_автомобилей', title="Среднее количество продаж автомобилей по транспортным средствам" ) ) # График 3. Круговая диаграмма, показывающая долю общих расходов по типам транспортных средств во время рецессии. # используйте groupby для создания соответствующих данных для построения графика exp_rec = спад_данных.groupby('Тип_транспортного средства')['Рекламные_расходы'].sum().reset_index() R_chart3 = dcc.Graph(figure = px.pie(exp_rec, значения = 'Рекламные расходы', имена = 'Тип_Транспортного средства', title="Круговая диаграмма, показывающая долю общих расходов по типам транспортных средств во время рецессии" ) ) # Постройте гистограмму 4, показывающую влияние уровня безработицы на тип транспортного средства и продажи. unemploy_sales = рецессия_data.groupby('Тип_транспортного средства')[['unemployment_rate','Automobile_Sales']].sum().reset_index() R_chart4 = dcc.Graph(figure = px.bar(unemploy_sales, x = 'уровень безработицы', y = 'Продажи_автомобилей', цвет = 'Тип_Транспортного средства' ) ) # возвращаться [ # html.Div(className='chart-item', Children=[html.Div(дети=R_chart1),html.Div(дети=R_chart3)]), # html.Div(className='chart-item', Children=[html.Div(дети=R_chart2),html.Div(дети=R_chart4)]) # ] возвращаться [ html.Div(className='chart-item', Children=R_chart1), html.Div(className='chart-item', Children=R_chart2), html.Div(className='chart-item', Children=R_chart3), html.Div(className='chart-item', Children=R_chart4) ] # ЗАДАЧА 2.6: Создание и отображение графиков для статистики годового отчета # Графики годового статистического отчета elif (input_year и report_type == 'Годовая статистика'): годовые_данные = данные[данные['Год'] == int(input_year)] # Постройте график 1. Годовые продажи автомобилей с использованием линейного графика за весь период. yas = data.groupby('Year')['Automobile_Sales'].mean().reset_index() Y_chart1 = dcc.Graph(figure=px.line(yas, х = 'Год', y = 'Продажи_автомобилей', title='Среднегодовые продажи автомобилей' ) ) # Постройте график 2. Общий объем продаж автомобилей за месяц, используя линейный график. mas = data.groupby('Месяц')['Automobile_Sales'].sum().reset_index() Y_chart2 = dcc.Graph(figure=px.line(mas, х = 'Месяц', y = 'Продажи_автомобилей', title='Среднемесячные продажи автомобилей' ) ) # Постройте гистограмму среднего количества автомобилей, проданных в течение данного года. avr_vdata =yearly_data.groupby('Месяц')['Automobile_Sales'].mean().reset_index() Y_chart3 = dcc.Graph(figure=px.bar(avr_vdata, х = 'Месяц', y = 'Продажи_автомобилей', title='Среднее количество автомобилей, проданных по типам транспортных средств за год {}'.format(input_year) ) ) # Постройте общие расходы на рекламу для каждого автомобиля с помощью круговой диаграммы. exp_data =yearly_data.groupby('Тип_транспортного средства')['Расходы_на рекламу'].sum().reset_index() Y_chart4 = dcc.Graph(figure = px.pie(exp_data, значения = 'Рекламные расходы', имена = 'Тип_Транспортного средства', title="Круговая диаграмма общих расходов по типам транспортных средств" ) ) #ЗАДАЧА 2.6: Возврат графиков для отображения годовых данных # возвращаться [ # html.Div(className='chart-item', Children=[html.Div(дети=Y_chart1),html.Div(дети=Y_chart3)]), # html.Div(className='chart-item', Children=[html.Div(дети=Y_chart2),html.Div(дети=Y_chart4)]) # ] возвращаться [ html.Div(className='chart-item', Children=Y_chart1), html.Div(className='chart-item', Children=Y_chart2), html.Div(className='chart-item', Children=Y_chart3), html.Div(className='chart-item', Children=Y_chart4) ] еще: return html.Div('Выберите тип отчета и год для просмотра статистики.') # Запустите приложение Dash если __name__ == '__main__': app.run_server(debug=True, use_reloader=False) Я пробовал отладку, распечатывая каждую часть кода, но это не похоже на явную ошибку, просто графические функции вызываются неправильно.
Мобильная версия