为了账号安全,请及时绑定邮箱和手机立即绑定

在仪表板中,根据复选框的值绘制数据集的子集

在仪表板中,根据复选框的值绘制数据集的子集

慕容3067478 2021-06-16 15:10:16
我正在使用Dash绘制一个数据集,其中包含 x、y 列和水果类型的另一列。我在清单中添加了苹果和葡萄。我现在想要做的是让图表显示葡萄的 x 和 y 值,如果葡萄复选框被勾选,苹果如果苹果复选框被勾选,如果两者都被勾选。有人可以帮助我吗?这是我知道的一个非常简单的问题。我知道我需要以某种方式更改“def ... return”部分。import dashfrom dash.dependencies import Input, Outputimport dash_core_components as dccimport dash_html_components as htmlimport pandas as pdimport plotly.graph_objs as goapp = dash.Dash()fruits = {'Day':[1,2,3,4,5,6],             'Visitors':[43,34,65,56,29,76],             'Bounce_Rate':[65,67,78,65,45,52],             'Nice_Fruits':['apple', 'apple', 'grape', 'apple', 'grape', 'grape']}df_all_fruits = pd.DataFrame(fruits)Nice_Fruits_list=df_all_fruits['Nice_Fruits'].unique()app.layout = html.Div(children=[html.H1('Payment Curve and predictor'), html.Label('fruits_1'),    dcc.Checklist(    id='fruits_checklist',    options=[{'label': i, 'value': i} for i in Nice_Fruits_list],        values=['apple', 'grape'],    labelStyle={'display': 'inline-block'}    ), dcc.Graph(        id='fruits_graph',        figure={            'data': [                go.Scatter(                    x=df_all_fruits['Visitors'],                    y=df_all_fruits['Bounce_Rate'],                    mode='markers',                    opacity=0.7,                    marker={                        'size': 15,                        'line': {'width': 0.5, 'color': 'white'}                    },                )            ],            'layout': go.Layout(                     xaxis={'type': 'linear', 'title': 'Visitors'},                yaxis={'title': 'Bounce_Rate'},                margin={'l': 40, 'b': 40, 't': 10, 'r': 10},                hovermode='closest'            )        }    ),])
查看完整描述

1 回答

?
慕丝7291255

TA贡献1859条经验 获得超6个赞

所以你想要的是更新你的数据,这就是你要做的,但要这样做,你必须把两个图放在同一个散点上。你确实想修改回报。您需要遍历 Checkbox 中的值。然后告诉图形将两个散点放在同一个图形上:


@app.callback(

Output('fruits_graph', 'figure'),

[Input('fruits_checklist', 'values')]

)

def update_graph(values):

      df = df_all_fruits


      return {'data': [go.Scatter(

        x= df[df['Nice_Fruits']==v]['Visitors'],

        y= df[df['Nice_Fruits']==v]['Bounce_Rate'],

    mode='markers',

        marker={

            'size': 15,

            'opacity': 0.5,

            'line': {'width': 0.5, 'color': 'white'}

        }

    ) for v in values],

    'layout': {'margin': {'l': 40, 'r': 0, 't': 20, 'b': 30}}

}

告诉我它是否解决了您的问题。


查看完整回答
反对 回复 2021-06-16
  • 1 回答
  • 0 关注
  • 160 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号