使用清单动态地添加轨迹

山姆

我有一个不同年龄范围的数据集作为不同的列。我试图在Plotly中为每个年龄段创建动态跟踪,以创建比较条形图。此外,我希望将这些迹线连接到检查表,因此我可以选择要在结果图中显示的迹线/条。但是,我很难弄清楚如何将此检查表连接到图形中的结果迹线,特别是因为我也有其他下拉列表与此图形连接。这是代码示例

    Gender=xl['Gender'].unique()
    Age=xl['Age'].unique()
    Activity=xl['Sport'].unique()

app=dash.Dash(__name__)

app.layout=html.Div(children=
[html.Div([
    html.H3('Age:', style={'paddingRight': '30px','fontSize':18}),

    dcc.Checklist(
        id='Age',
        options=[
            {'label': i, 'value': i} for i in Age],
    value='18-24' 
)], style={'width':'33%','display':'inline-block'}),

html.Div([
    html.H3('Gender:', style={'paddingRight': '30px','fontSize':18}),
    dcc.Dropdown(
        id='Gender', 
        options=[
            {'label': 'Male', 'value': 'Male'},
            {'label': 'Female', 'value': 'Female'}
        ],
        value='Male'
    )], style={'width':'33%','display':'inline-block'}),

html.H3('Activity:', style={'paddingRight': '30px','fontSize':18}), 

dcc.Dropdown(
id='Sport',
options=[
{'label': i, 'value': i} for i in Activity],
value='Yoga'
),
],style={'width':'33%','display':'inline-block'}),

html.Div([
    dcc.Graph(id='linear')]),

html.Div([
    dcc.Graph(id='linear2')
])])

@app.callback(
 dash.dependencies.Output('linear','figure'),
[dash.dependencies.Input('Gender','value'),
 dash.dependencies.Input('Sport','value'),
 dash.dependencies.Input('Age','value')])

def update_graph(Gender_name,sport_name,age_name):
      xl1=xl[xl['Gender'] == Gender_name]
      xl2=xl1[xl1['Sport'] == sport_name]
      xl3=xl2[xl2['Age'] == age_name]

      Total_x=xl3.Date

      trace1=go.Bar(x=Total_x,y=age_name?,name='6-12')
      trace2=go.Bar(x=Total_x,y=age_name?,name='12-18')
      trace3=go.Bar(x=Total_x,y=age_name,name='18-24')

      Totallayout=go.Layout(xaxis={'title': 'Year'},
                              yaxis={'title': 'Participants'},
                              title= 'Core Player Comparison',
                              hovermode='closest')


      return {'data':[trace2,trace1,trace3],
             'layout':[Totallayout]}

我希望有人可以帮助我使用def更新图形功能,以便它可以链接到我在创建不同跟踪时创建的年龄下拉列表。如果有人可以帮助,将不胜感激,谢谢!

样本数据框:

日期运动性别年龄球员核心
2008瑜伽男6-12 2308.54 692.562
2008瑜伽男13-17 3551.60 1065.480
2008瑜伽男18-24 2663.70 799.110
2008瑜伽男25-34 3551.60 1065.480
2008瑜伽男35-44 2130.96 639.288

想法是创建一个图形,其中“玩家”或“核心”是Y轴,日期是x轴,年龄是轨迹。

珊瑚湾

感谢您使用示例进行更新df我不确定您的目标到底是什么,但是我有数据在流转并绘制图表df这是一个功能示例:

dict_form = {
    'Date': [2008, 2008, 2008, 2008, 2008],
    'Sport': ['Yoga', 'Yoga', 'Yoga', 'Yoga', 'Yoga'],
    'Gender': ['Male', 'Male', 'Male', 'Male', 'Male'],
    'Age': ['6-12', '13-17', '18-24', '25-34', '35-44'],
    'Players': [2308.54, 3551.60, 2663.70, 3551.60, 2130.96],
    'Core': [692.562, 1065.480, 799.110, 1065.480, 639.288],
}

df = pandas.DataFrame.from_dict(dict_form)

app = dash.Dash(__name__)

app.layout = html.Div(children=[
    html.Div(children=[
        html.H3('Age:', style={'paddingRight': '30px', 'fontSize': 18}),

        dcc.Checklist(
            id='Age',
            options=[
                {'label': i, 'value': i} for i in df['Age']],
            values=['18-24']
            )
    ]),

    html.Div(children=[
        html.H3('Gender:', style={'paddingRight': '30px', 'fontSize': 18}),
        dcc.Dropdown(
            id='Gender',
            options=[
                {'label': 'Male', 'value': 'Male'},
                {'label': 'Female', 'value': 'Female'}
            ],
            value='Male'
        )
    ], style={'width': '33%', 'display': 'inline-block'}),

    html.H3('Activity:', style={'paddingRight': '30px', 'fontSize': 18}),
    dcc.Dropdown(
        id='Sport',
        options=[
            {'label': i, 'value': i} for i in df['Sport']],
        value='Yoga'
    ),

    html.Div([
        dcc.Graph(id='linear')]),

    html.Div([
        dcc.Graph(id='linear2')
    ])
], style={'width': '33%', 'display': 'inline-block'})


@app.callback(
    dash.dependencies.Output('linear', 'figure'),
    [dash.dependencies.Input('Gender', 'value'),
     dash.dependencies.Input('Sport', 'value'),
     dash.dependencies.Input('Age', 'values')])
def update_graph(gender_name, sport_name, age_name):
    df1 = df[df['Gender'] == gender_name]
    df2 = df1[df1['Sport'] == sport_name]
    df3 = df2[df2['Age'].isin(age_name)]

    total_x = df3.Age

    trace1 = go.Bar(x=total_x, y=df3['Players'], name='Players')
    trace2 = go.Bar(x=total_x, y=df3['Core'], name='Core')

    total_layout = go.Layout(xaxis={'title': 'Year'},
                             yaxis={'title': 'Participants'},
                             title='Core Player Comparison',
                             hovermode='closest')

    return {'data': [trace2, trace1],
            'layout': [total_layout]}


if __name__ == '__main__':
    app.run_server(debug=True, threaded=True)

这是图表的屏幕截图:

图表

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

动态地将数据添加到QTableView

来自分类Dev

动态地向类添加属性

来自分类Dev

如何动态地向ROAR表示符添加属性?

来自分类Dev

如何动态地向Source添加元素?

来自分类Dev

通过js动态地在gridview行中添加CJuiAutocomplete

来自分类Dev

如何动态地向队列添加功能?

来自分类Dev

动态地将超链接添加到gridview

来自分类Dev

动态地向对象添加元素

来自分类Dev

动态地将视图添加到布局

来自分类Dev

动态地将标签添加到JTabbedPane

来自分类Dev

我想动态地在Flux中添加对象

来自分类Dev

动态地在python中向对象添加“真实”方法

来自分类Dev

如何动态地将Image添加到ImageView?

来自分类Dev

如何动态地在标签之间添加标签?

来自分类Dev

动态地添加图片到这个美丽的框架

来自分类Dev

如何动态地向对象添加数组?

来自分类Dev

如何动态地向DataFrame添加列?

来自分类Dev

如何动态地在“ TextInputLayout”的右端添加可绘制对象?

来自分类Dev

动态地从Flutter列表添加和删除项目

来自分类Dev

我想动态地在Flux中添加对象

来自分类Dev

如何动态地在标签之间添加标签?

来自分类Dev

您可以动态地向对象添加属性吗?

来自分类Dev

如何动态地向Google地图添加标记?

来自分类Dev

如何动态地向JdbcTemplate查询添加参数值?

来自分类Dev

如何仅使用JavaScript将JavaScript动态地添加到“ body”类?

来自分类Dev

如何动态地向DataTables添加列?

来自分类Dev

动态地向对象添加任何名称的新属性

来自分类Dev

动态地向cookie添加新值

来自分类Dev

如何使用jquery动态地将元素添加到SVG图像?