gpt4 book ai didi

使用多个过滤器作为输入的 Python Plotly-Dash 应用程序

转载 作者:行者123 更新时间:2023-12-02 04:28:41 27 4
gpt4 key购买 nike

我刚刚开始学习 Python,目前正在探索 Dash。我有兴趣创建一个仪表板,该仪表板将多选选项作为输入并创建一个条形图作为输出。我在回调识别输入并相应地对数据求和时遇到困难。我见过使用 Dash 创建的仪表板示例,其中有一个输入,但我遇到的问题是如何能够对所选输入的组合而不是一组组合进行求和。

例如,使用该表:
enter image description here

import dash
import dash_core_components as dcc
import dash_html_components as html

import pandas as pd
import matplotlib.pyplot as plt
%matplotlib inline

from plotly import __version__
from plotly.offline import download_plotlyjs, init_notebook_mode, plot, iplot
import plotly.plotly as py
import plotly.graph_objs as go
import plotly.figure_factory as FF
import numpy as np

df = pd.read_excel('test_file.xlsx', 'Sheet1')


type_options = df['TYPE'].unique()
ind_options = df['IND'].unique()

app = dash.Dash()

app.layout = html.Div(children=[
html.H1(children='Dashboard', style={
'textAlign': 'center',
}),
html.P('Type'),
dcc.Dropdown(
id='typePicker',
options=[{'label': i, 'value': i} for i in type_options],
value='A',
multi=True
),

html.P('Ind'),
dcc.Dropdown(
id='indPicker',
options=[{'label': i, 'value': i} for i in ind_options],
value='1',
multi=True
),

dcc.Graph(
id='sales-graph'
)
])


@app.callback(
dash.dependencies.Output('sales-graph', 'figure'),
[dash.dependencies.Input('typePicker', 'value'),
dash.dependencies.Input('indPicker', 'value')])
def update_graph(typePicker, indPicker):


return {
'data': [
go.Bar(
x=['April Sales'],
#y=df.groupby(df['TYPE'] == typePicker).sum('April_sales')
y=df[df['TYPE'] == typePicker]['April_sales']
)
],
'layout': go.Layout(
yaxis={'title': 'sales'},
barmode='stack',
hovermode='closest'
)
}

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

我从 4 月销售的一个条形开始 - 我也想为 5 月的销售添加另一个条形,但我想在添加多个跟踪之前让一些东西起作用。现在,运行此代码会显示“A”的第一个实例的 4 月销售额条形图,因为它被设置为默认值。

我希望能够选择 type 和 ind 的任意组合,包括每个选项的多个选项(例如,为 type 选择“A”和“C”,为 ind 选择“1”将显示一个条形图,汇总这些选项的 4 月销售额) .当我尝试使用数据透视表时,我只能得到每个的不同组合。我还探索了使用 groupby 或 asin,但我无法根据需要对输入进行总结。

在 Dash 中,如何在回调中使用多个输入来根据多个选择更新图形?任何建议将不胜感激。

最佳答案

我不确定我是否正确理解您的问题,但我认为您正在寻找:

   go.Bar(
x=['April Sales'],
y=df[(df['TYPE'] == typePicker) &
(df['IND'] == indPicker)]['April_sales']
)

关于使用多个过滤器作为输入的 Python Plotly-Dash 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50971869/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com