рдбреИрд╢ рдХреНрд╡рд┐рдХ рд╕реНрдЯрд╛рд░реНрдЯ рдЧрд╛рдЗрдб - рдбреИрд╢рдмреЛрд░реНрдб рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╛рдпрдерди рд╡реЗрдм рдлреНрд░реЗрдорд╡рд░реНрдХред рд╕реНрдерд╛рдкрдирд╛ + рдбреИрд╢ рд▓реЗрдЖрдЙрдЯ

рдЫрд╡рд┐

рд╕рднреА рдХреЛ рдирдорд╕реНрдХрд╛рд░!

рдЖрдЬ рдореИрдВ рд╕реБрдЭрд╛рд╡ рджреЗрддрд╛ рд╣реВрдВ рдХрд┐ рдЕрдЬрдЧрд░ рдирд╛рдордХ рдбреИрд╢ рдХреЗ рд╕рд╛рде рдорд┐рд▓рдХрд░ рд╕рдмрд╕реЗ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╡реЗрдм рдлреНрд░реЗрдорд╡рд░реНрдХ рдореЗрдВ рд╕реЗ рдПрдХ рдореЗрдВ рдЧреЛрддрд╛рдЦреЛрд░реА рдХрд░реЗрдВред рдпрд╣ рдмрд╣реБрдд рдкрд╣рд▓реЗ рдирд╣реАрдВ рдЖрдпрд╛ рдерд╛, рдХреБрдЫ рд╕рд╛рд▓ рдкрд╣рд▓реЗ рдкреНрд▓реЙрдЯрд▓реА рдврд╛рдВрдЪреЗ рдХреЗ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдбреИрд╢ рдЕрдкрдиреЗ рдЖрдк рдореЗрдВ рдлреНрд▓рд╛рд╕реНрдХ, рд░рд┐рдПрдХреНрдЯ.рдЬреЗрдПрд╕, рдПрдЪрдЯреАрдПрдордПрд▓ рдФрд░ рд╕реАрдПрд╕рдПрд╕ рдХрд╛ рдПрдХ рдЧреБрдЪреНрдЫрд╛ рд╣реИред

PLOTCON 2016 рдореЗрдВ рдХреНрд░рд┐рд╕ рдкрд╛рд░рдорд░ рдХрд╛ рдкреНрд░рджрд░реНрд╢рди


рдЖрдЗрдП рдЕрднреА рд╕реЗ рдлреНрд░реЗрдорд╡рд░реНрдХ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВред рдпрд╣рд╛рдВ рдЕрдкрдбреЗрдЯ рдХрд┐рдП рдЧрдП рд╕рдВрд╕реНрдХрд░рдг рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВ ред

pip install dash==0.31.1 # The core dash backend pip install dash-html-components==0.13.2 # HTML components pip install dash-core-components==0.38.1 # Supercharged components pip install dash-table==3.1.7 # Interactive DataTable component (new!) 

рджреЛрд╕реНрддреЛрдВ, рдпрджрд┐ рдЖрдк рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕ рдврд╛рдВрдЪреЗ рдХреЛ рд╕рдордЭрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдкреНрд░рдХрд╛рд╢рдиреЛрдВ рдХреЛ рдЕрдВрдд рддрдХ рдкрдврд╝реЗрдВ, рдХреНрдпреЛрдВрдХрд┐ рдЕрдХреНрд╕рд░ рдЙрджрд╛рд╣рд░рдг рдкрд╣рд▓реЗ рдЕрдиреБрд╕рд░рдг рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдХреЛрдб рдХреА рд╡рд┐рд╕реНрддреГрдд рд╕рдореАрдХреНрд╖рд╛ рдХреЗ рдмрд╛рджред рдпрджрд┐ рдЖрдк рдЕрднреА рднреА рдирд╣реАрдВ рд╕рдордЭреЗ рд╣реИрдВ, рддреЛ рдореИрдВ рдЖрдкрдХреЛ рдореВрд▓ рдореЗрдВ рдЕрдВрдЧреНрд░реЗрдЬреА рдореЗрдВ рдбреИрд╢ рдкреНрд░рд▓реЗрдЦрди рдкрдврд╝рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВред RuNet рдореЗрдВ рднреА рдХрдИ рд▓реЗрдЦ рд╣реИрдВ рдЬреЛ рдЙрди рдЕрд╡рдзрд╛рд░рдгрд╛рдУрдВ рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд░рддреЗ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдореИрдВрдиреЗ рдЗрд╕ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдореЗрдВ рдЫреЛрдбрд╝рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рдерд╛ред

рдЪрд▓рд┐рдП рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред


рдбреИрд╢ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рджреЛ рднрд╛рдЧ рд╣реЛрддреЗ рд╣реИрдВред рдкрд╣рд▓рд╛ рднрд╛рдЧ, "рд▓реЗрдЖрдЙрдЯ," рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рд╣рдорд╛рд░рд╛ рдЖрд╡реЗрджрди рдХреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИред рджреВрд╕рд░рд╛ рднрд╛рдЧ рдЖрд╡реЗрджрди рдХреА рдЕрдиреНрддрд░рдХреНрд░рд┐рдпрд╛рд╢реАрд▓рддрд╛ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИ, рд╣рдо рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдЧрд▓реЗ рд▓реЗрдЦ рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдВрдЧреЗред

рдбреИрд╢ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреЗ рд╕рднреА рджреГрд╢реНрдп рдШрдЯрдХреЛрдВ рдХреЗ рд▓рд┐рдП рдкрд╛рдпрдерди рдХрдХреНрд╖рд╛рдПрдВ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдбреЗрд╡рд▓рдкрд░реНрд╕ рддрдерд╛рдХрдерд┐рдд dash_core_components рдФрд░ dash_html_components рдореЗрдВ рдШрдЯрдХреЛрдВ рдХрд╛ рдПрдХ рд╕реЗрдЯ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдЖрдк рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдФрд░ React.js рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рднреА рдЕрдкрдиреЗ рдШрдЯрдХ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ

dash_core_components рдореЗрдВ рд╡рд┐рднрд┐рдиреНрди рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╣реЛрддреЗ рд╣реИрдВ, рдЬреИрд╕реЗ рдХрд┐, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдбреНрд░реЙрдк-рдбрд╛рдЙрди рд╕реВрдЪреА, рдЪрд╛рд░реНрдЯ рдФрд░ рдЪреЗрдХ рдмреЙрдХреНрд╕ред

dash_html_components рдореЗрдВ рдПрдЪрдЯреАрдПрдордПрд▓ рдХрдВрд╕реНрдЯреНрд░рдХреНрд╢рди рд╣реЛрддреЗ рд╣реИрдВ рдЬрд┐рдирдХреЗ рд╕рд╛рде рд╣рдорд╛рд░реЗ рдлреЙрд░реНрдо рдХреЛ рд▓рдкреЗрдЯрдирд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП Div рдмреНрд▓реЙрдХ рдпрд╛ рд╣реЗрдбрд░ рдЯреИрдЧ H1, H2, рдФрд░ рдЗрд╕реА рддрд░рд╣ред рдбреЗрд╡рд▓рдкрд░реНрд╕ рд╣рдореЗрдВ рдкрд╛рдпрдерди рд╢рдмреНрджрдХреЛрд╢реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ html рд╕реЗ рдХреБрдЫ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЕрдореВрд░реНрддрддрд╛ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВред

рд╕рдордЭрдирд╛ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, app.py рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдВ, рдЬрд┐рд╕рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╢рд╛рдорд┐рд▓ рд╣реЛрдВрдЧреЗ:

 # -*- coding: utf-8 -*- #    import dash import dash_core_components as dcc import dash_html_components as html #     ,    external_stylesheets = ['https://codepen.io/chriddyp/pen/bWLwgP.css'] app = dash.Dash(__name__, external_stylesheets=external_stylesheets) app.layout = html.Div(children=[ html.H1(children='Hello Dash'), html.Div(children=''' Dash: A web application framework for Python. '''), dcc.Graph( id='example-graph', figure={ 'data': [ {'x': [1, 2, 3], 'y': [4, 1, 2], 'type': 'bar', 'name': 'SF'}, {'x': [1, 2, 3], 'y': [2, 4, 5], 'type': 'bar', 'name': u'Montr├йal'}, ], 'layout': { 'title': 'Dash Data Visualization' } } ) ]) if __name__ == '__main__': app.run_server(debug=True) 

рдФрд░ рдЗрд╕реЗ рд╡рд░реНрддрдорд╛рди рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╕реЗ рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рдЪрд▓рд╛рдПрдВ:
$ python app.py

...Running on http://127.0.0.1:8050/ (Press CTRL+C to quit)

рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рд╕рд░реНрд╡рд░ рд╢реБрд░реВ рд╣реЛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдкреЛрд░реНрдЯ 8050 рдХреЗ рд▓рд┐рдП рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИ (рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рдЕрд▓рдЧ рдкреЛрд░реНрдЯ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ)ред

рдкрддреЗ рдкрд░ рдЬрд╛рдПрдВ http://127.0.0.1:8050/
рдФрд░ рджреЗрдЦреЗрдВ:



рдЯрд┐рдкреНрдкрдгреА


  1. layout рдШрдЯрдХ рдореЗрдВ "рдШрдЯрдХреЛрдВ" рдХрд╛ рдПрдХ рдкреЗрдбрд╝ рд╣реЛрддрд╛ рд╣реИ рдЬреЛ dash_html_components рдореЗрдВ рд╕рдорд╛рд╣рд┐рдд dash_html_components ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП div рдмреНрд▓реЙрдХред
  2. dash_html_components рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ html рдЯреИрдЧ рдХреЗ рд▓рд┐рдП рдПрдХ рдШрдЯрдХ рд╣реЛрддрд╛ рд╣реИред html.H1(children='Hello Dash') рдШрдЯрдХ рдПрдХ HTML рддрддреНрд╡ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ
     <h1>Hello Dash</h1> 
    рдЖрдкрдХреЗ рдЖрд╡реЗрджрди рдореЗрдВред
  3. рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЗ рд╕рднреА рдШрдЯрдХ HTML рдШрдЯрдХ рдирд╣реАрдВ рд╣реИрдВред dash_core_components рдЬреЗрдПрд╕, рдПрдЪрдЯреАрдПрдордПрд▓, рд╕реАрдПрд╕рдПрд╕, рдФрд░ рд░рд┐рдПрдХреНрдЯ.рдЬреЗрдПрд╕ рдХреЗ рдПрдХ рд╕рдореВрд╣ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЙрдЪреНрдЪ-рд╕реНрддрд░реАрдп рддрддреНрд╡реЛрдВ рдФрд░ рдЗрдВрдЯрд░реИрдХреНрдЯрд┐рд╡ рддрддреНрд╡реЛрдВ рдХреЛ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИред
  4. рдкреНрд░рддреНрдпреЗрдХ рдШрдЯрдХ рдХреЛ рдХреАрд╡рд░реНрдб рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдбреИрд╢ рдШреЛрд╖рдгрд╛рддреНрдордХ рд╣реИ: рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЖрдк рдЗрди рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЕрдкрдиреЗ рдЖрд╡реЗрджрди рдХрд╛ рд╡рд░реНрдгрди рдХрд░реЗрдВрдЧреЗред
  5. children рд╡рд┐рд╢реЗрд╖рддрд╛ рдереЛрдбрд╝реА рдЦрд╛рд╕ рд╣реИред рд╕рдореНрдореЗрд▓рди рджреНрд╡рд╛рд░рд╛, рдпрд╣ рд╣рдореЗрд╢рд╛ рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдЖрдк html.H1(children='Hello Dash') рд╕рд╛рде html.H1('Hello Dash') html.H1(children='Hello Dash') рдХреЛ html.H1('Hello Dash') ред

рдЯрд┐рдкреНрдкрдгреА


рдбреИрд╢ рдореЗрдВ рдПрдХ рдкрд░рд┐рдЪрд┐рдд рд╡реЗрдм рдбреЗрд╡рд▓рдкрд░ рд╕реБрд╡рд┐рдзрд╛ рд╣реИ: hot-reloading ред рдпрд╣ рдЙрд╕ рдХреНрд╖рдг рд╕рдХреНрд░рд┐рдп рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдлрд╝рдВрдХреНрд╢рди app.run_server(debug=True) рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЬрдм рднреА рдЖрдк рдХреЛрдб рдореЗрдВ рдмрджрд▓рд╛рд╡ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдкрд░рд┐рдгрд╛рдо рд╕рд╣реЗрдЬрддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рд╕реБрд╡рд┐рдзрд╛ рдЖрдкрдХреЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рддреА рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╣рд░ рдмрд╛рд░ рд╕рд░реНрд╡рд░ рдХреЛ рдкреБрдирд░рд╛рд░рдВрдн рдХрд░рдиреЗ рдХреА рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред

рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рдпрд╛рдж рдХрд░рддреЗ рд╣реИрдВ, рдбреИрд╢ рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ HTML рдЯреИрдЧ рдХреЗ рд▓рд┐рдП рдПрдХ рдШрдЯрдХ рд╣реЛрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдпрд╣ рд╕рднреА рдХреАрд╡рд░реНрдб рддрд░реНрдХреЛрдВ, рд╕рд╛рде рд╣реА HTML рддрддреНрд╡реЛрдВ рдХреЛ рднреА рд╕реНрд╡реАрдХрд╛рд░ рдХрд░ рд╕рдХрддрд╛ рд╣реИред

рдЖрдЗрдП рд╣рдорд╛рд░реЗ рдХреЛрдб рдХреЛ рдереЛрдбрд╝рд╛ рдмрджрд▓реЗрдВ:

 # -*- coding: utf-8 -*- import dash import dash_core_components as dcc import dash_html_components as html external_stylesheets = ['https://codepen.io/chriddyp/pen/bWLwgP.css'] app = dash.Dash(__name__, external_stylesheets=external_stylesheets) colors = { 'background': '#111111', 'text': '#7FDBFF' } app.layout = html.Div(style={'backgroundColor': colors['background']}, children=[ html.H1( children='Hello Dash', style={ 'textAlign': 'center', 'color': colors['text'] } ), html.Div(children='Dash: A web application framework for Python.', style={ 'textAlign': 'center', 'color': colors['text'] }), dcc.Graph( id='example-graph-2', figure={ 'data': [ {'x': [1, 2, 3], 'y': [4, 1, 2], 'type': 'bar', 'name': 'SF'}, {'x': [1, 2, 3], 'y': [2, 4, 5], 'type': 'bar', 'name': u'Montr├йal'}, ], 'layout': { 'plot_bgcolor': colors['background'], 'paper_bgcolor': colors['background'], 'font': { 'color': colors['text'] } } } ) ]) if __name__ == '__main__': app.run_server(debug=True) 

рд╣рдо рдкреГрд╖реНрда рдХреЛ рддрд╛рдЬрд╝рд╛ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рджреЗрдЦрддреЗ рд╣реИрдВ:



рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рд╣рдордиреЗ style рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ html.Div рдФрд░ html.H1 рд╢реИрд▓рд┐рдпреЛрдВ рдХреЛ рдмрджрд▓ рджрд┐рдпрд╛ред

html.H1('Hello Dash', style={'textAlign': 'center', 'color': '#7FDBFF'}) рдбреИрд╢ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдкреНрд░рд╕реНрддреБрдд html.H1('Hello Dash', style={'textAlign': 'center', 'color': '#7FDBFF'}) :

 <h1 style="text-align: center; color: #7FDBFF">Hello Dash</h1> 

рд▓реЗрдХрд┐рди рдХреБрдЫ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд┐рдВрджреБ рд╣реИрдВ:


  1. HTML style рдЧреБрдг рдЕрд░реНрдзрд╡рд┐рд░рд╛рдо рд╕реЗ рдЕрд▓рдЧ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╣реИрдВред рдбреИрд╢ рдореЗрдВ, рдЖрдк рдХреЗрд╡рд▓ рд╢рдмреНрджрдХреЛрд╢ рдкрд╛рд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
  2. HTML рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ style рд╢рдмреНрджрдХреЛрд╢ рдореЗрдВ рдХреБрдВрдЬрд┐рдпрд╛рдБ рдереЛрдбрд╝реА рднрд┐рдиреНрди рд╣реЛрддреА рд╣реИрдВред text-align рдмрдЬрд╛рдп text-align рд╣рдо text-align рд▓рд┐рдЦрддреЗ рд╣реИрдВред
  3. рдбреИрд╢ (рдХрдХреНрд╖рд╛) рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдЯреИрдЧ рддрддреНрд╡ рдХреЗ рдмрдЪреНрдЪреЗ рдХрдХреНрд╖рд╛рдУрдВ рдХреЛ children рддрд░реНрдХ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХ рд╕рд░рдгреА рдореЗрдВ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдкреБрди: рдкреНрд░рдпреЛрдЬреНрдп рдШрдЯрдХ


рдЬрд╛рд░реА рд░рдЦрддреЗ рд╣реБрдП, рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ рдХрд┐ рд╣рдореЗрдВ рдХреБрдЫ рддрддреНрд╡реЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬреЛ рд╣рдорд╛рд░реЗ рдЖрд╡реЗрджрди рдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдирдкреБрдЯ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдмрджрд▓ рдЬрд╛рдПрдВрдЧреЗред рдЗрд╕рдХреЗ рд▓рд┐рдП, рдбреИрд╢ рдореЗрдВ рддрдерд╛рдХрдерд┐рдд reusable components рдкреНрд░рджрд╛рди рдХрд┐рдП reusable components ред рдПрдХ рдЙрджрд╛рд╣рд░рдг рддрд╛рд▓рд┐рдХрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЙрди рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рдкрдВрдбреЛрдВ рдХреЗ рдбреЗрдЯрд╛рдлрд╝реНрд░реЗрдо рд╕реЗ рд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

 import dash import dash_core_components as dcc import dash_html_components as html import pandas as pd df = pd.read_csv( 'https://gist.githubusercontent.com/chriddyp/' 'c78bf172206ce24f77d6363a2d754b59/raw/' 'c353e8ef842413cae56ae3920b8fd78468aa4cb2/' 'usa-agricultural-exports-2011.csv') def generate_table(dataframe, max_rows=10): return html.Table( # Header [html.Tr([html.Th(col) for col in dataframe.columns])] + # Body [html.Tr([ html.Td(dataframe.iloc[i][col]) for col in dataframe.columns ]) for i in range(min(len(dataframe), max_rows))] ) external_stylesheets = ['https://codepen.io/chriddyp/pen/bWLwgP.css'] app = dash.Dash(__name__, external_stylesheets=external_stylesheets) app.layout = html.Div(children=[ html.H4(children='US Agriculture Exports (2011)'), generate_table(df) ]) if __name__ == '__main__': app.run_server(debug=True) ') import dash import dash_core_components as dcc import dash_html_components as html import pandas as pd df = pd.read_csv( 'https://gist.githubusercontent.com/chriddyp/' 'c78bf172206ce24f77d6363a2d754b59/raw/' 'c353e8ef842413cae56ae3920b8fd78468aa4cb2/' 'usa-agricultural-exports-2011.csv') def generate_table(dataframe, max_rows=10): return html.Table( # Header [html.Tr([html.Th(col) for col in dataframe.columns])] + # Body [html.Tr([ html.Td(dataframe.iloc[i][col]) for col in dataframe.columns ]) for i in range(min(len(dataframe), max_rows))] ) external_stylesheets = ['https://codepen.io/chriddyp/pen/bWLwgP.css'] app = dash.Dash(__name__, external_stylesheets=external_stylesheets) app.layout = html.Div(children=[ html.H4(children='US Agriculture Exports (2011)'), generate_table(df) ]) if __name__ == '__main__': app.run_server(debug=True) 

рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдереЛрдбрд╝рд╛


рдЖрдЗрдП рдпрд╛рдж рдХрд░реЗрдВ рдХрд┐ HTML рдореЗрдВ рдПрдХ рдЯреЗрдмрд▓ рдХреНрдпрд╛ рд╣реИред

рдПрдХ HTML рдЯреЗрдмрд▓ рдХреЛ рдЯреЗрдмрд▓ рдЯреИрдЧ рджреНрд╡рд╛рд░рд╛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рддрд╛рд▓рд┐рдХрд╛ рдХреА рдкреНрд░рддреНрдпреЗрдХ рдкрдВрдХреНрддрд┐ рдХреЛ рдЯреНрд░ рдЯреИрдЧ рджреНрд╡рд╛рд░рд╛ рдкрд╣рдЪрд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред рддрд╛рд▓рд┐рдХрд╛ рдХрд╛ рд╢реАрд░реНрд╖рд▓реЗрдЦ рд╡реЗрдВ рдЯреИрдЧ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред Td рдЯреИрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдЯреЗрдмрд▓ рд╕реЗрд▓ рдХреЛ рдЖрдмрд╛рдж рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдпрд╣ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рдВрд░рдЪрдирд╛ рдХреЛ рдмрддрд╛рддрд╛ рд╣реИ:

 <table style="width:100%"> <tr> <th>Firstname</th> <th>Lastname</th> <th>Age</th> </tr> <tr> <td>Jill</td> <td>Smith</td> <td>50</td> </tr> <tr> <td>Eve</td> <td>Jackson</td> <td>94</td> </tr> <tr> <td>John</td> <td>Doe</td> <td>80</td> </tr> </table> 

рдФрд░ рдпрд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:

рдкреНрд░рдердордЕрдВрддрд┐рдо рдирд╛рдордЖрдпреБ
рдЬреАрд▓рд▓реЛрд╣рд╛рд░50
рдИрд╡рдЬреИрдХреНрд╕рди94
рдЬреЙрдирд╣рд░рд┐рдгреА80


рдХрд░реНрдиреЗрд▓ рдШрдЯрдХ (рдореБрдЦреНрдп рдШрдЯрдХ)


рдЬреИрд╕рд╛ рдХрд┐ рд╣рдордиреЗ рдкрд╣рд▓реЗ рдХрд╣рд╛, dash_core_components рдореЗрдВ рдЙрдЪреНрдЪ-рд╕реНрддрд░реАрдп рддрддреНрд╡ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рдЬреИрд╕реЗ: рдбреНрд░реЙрдк-рдбрд╛рдЙрди рдореЗрдиреВ, рдЧреНрд░рд╛рдлрд╝ рдФрд░ рдмрд╣реБрдд рдХреБрдЫред

рдЖрдк рдЗрди рддрддреНрд╡реЛрдВ рдХреЗ рджреГрд╢реНрдп рдкрдХреНрд╖ рд╕реЗ рдЦреБрдж рдХреЛ рдкрд░рд┐рдЪрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХреЛрдб (рдкреНрд▓реЙрдЯрд▓реА рд╕реЗ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ, рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рд╕рдореНрдорд╛рди) рдХреЗ рд╕рд╛рде рд╣реИ ред

рдбреЗрд╡рд▓рдкрд░ рдХреЗ рд▓рд┐рдП, рдЖрдк рдЕрд░реНрдерд╛рддреН рдХреЛрдб рдХреЗ рд╕рднреА рддрддреНрд╡реЛрдВ рдХреЛ рдЕрд▓рдЧ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рдкреНрд░рддреНрдпреЗрдХ рдХрд░реНрдиреЗрд▓ рдШрдЯрдХ рдХреЗ рд▓рд┐рдП рдПрдХ рд▓реЗрдмрд▓ рд▓рд┐рдЦрдиреЗ рдХреА рдкреНрд░рдерд╛ рд╣реИред рдпрд╣ рдХреБрдЫ рд╣рдорд╛рд░реЗ рддрддреНрд╡ рдХреЗ рдирд╛рдо рдХреА рддрд░рд╣ рд╣реИред рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рд┐рд░реНрдл рдбрд┐рдмрдЧрд┐рдВрдЧ рдХреЛ рдЖрд╕рд╛рди рдмрдирд╛рддрд╛ рд╣реИред рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдЖрдкрдХреЗ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рдЬрд▓реНрджреА рд╕реЗ рд╕рдордЭрдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЖрдЧреЗ рдЖрдк рд╕рдордЭреЗрдВрдЧреЗ рдХрд┐ рдореЗрд░рд╛ рдХреНрдпрд╛ рдорддрд▓рдм рд╣реИред

рдЖрдЗрдП рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рджреЗрдЦреЗрдВ:

 import dash import dash_core_components as dcc import dash_html_components as html external_stylesheets = ['https://codepen.io/chriddyp/pen/bWLwgP.css'] app = dash.Dash(__name__, external_stylesheets=external_stylesheets) app.layout = html.Div([ html.Label('Dropdown'), dcc.Dropdown( options=[ {'label': 'New York City', 'value': 'NYC'}, {'label': u'Montr├йal', 'value': 'MTL'}, {'label': 'San Francisco', 'value': 'SF'} ], value='MTL' ), html.Label('Multi-Select Dropdown'), dcc.Dropdown( options=[ {'label': 'New York City', 'value': 'NYC'}, {'label': u'Montr├йal', 'value': 'MTL'}, {'label': 'San Francisco', 'value': 'SF'} ], value=['MTL', 'SF'], multi=True ), html.Label('Radio Items'), dcc.RadioItems( options=[ {'label': 'New York City', 'value': 'NYC'}, {'label': u'Montr├йal', 'value': 'MTL'}, {'label': 'San Francisco', 'value': 'SF'} ], value='MTL' ), html.Label('Checkboxes'), dcc.Checklist( options=[ {'label': 'New York City', 'value': 'NYC'}, {'label': u'Montr├йal', 'value': 'MTL'}, {'label': 'San Francisco', 'value': 'SF'} ], values=['MTL', 'SF'] ), html.Label('Text Input'), dcc.Input(value='MTL', type='text'), html.Label('Slider'), dcc.Slider( min=0, max=9, marks={i: 'Label {}'.format(i) if i == 1 else str(i) for i in range(1, 6)}, value=5, ), ], style={'columnCount': 2}) if __name__ == '__main__': app.run_server(debug=True) 

рдпрд╣рд╛рдВ рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рд╣рдордиреЗ рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдбрд┐рд╡ рдмреНрд▓реЙрдХ рдмрдирд╛рдпрд╛, рдЬрд┐рд╕рдореЗрдВ рд╣рдорд╛рд░реЗ рд╡рд┐рднрд┐рдиреНрди рдореБрдЦреНрдп рдШрдЯрдХ рд╣реИрдВред рдпрд╣ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:

рдЫрд╡рд┐

рдЕрднреА рднреА рдкреНрд░рд╢реНрди рд╣реИрдВ?


рдбреЗрд╡рд▓рдкрд░реНрд╕ рдиреЗ рдмрд╣реБрдд рд╡рд┐рд╕реНрддреГрдд рджрд╕реНрддрд╛рд╡реЗрдЬ рддреИрдпрд╛рд░ рдХрд┐рдП рд╣реИрдВ, рдЖрдк рдЗрд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХрдХреНрд╖рд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкрд╛рдпрдерди рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ:

 >>> help(dcc.Dropdown) 

рд╕рд╛рд░рд╛рдВрд╢


рдкрд╣рд▓реЗ рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд┐рдпрд╛ рдЧрдпрд╛ layout рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рд╣рдорд╛рд░рд╛ рдЖрд╡реЗрджрди рдХреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИред рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рдЗрд╕рдореЗрдВ HTML рдЯреИрдЧреНрд╕ рдХрд╛ рдПрдХ рдкреЗрдбрд╝ рдЬреИрд╕рд╛ рдкрджрд╛рдиреБрдХреНрд░рдо рдФрд░ рдбреИрд╢ рдХреЛрд░ рдХреЗ рдЙрдЪреНрдЪ-рд╕реНрддрд░реАрдп рддрддреНрд╡ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ, рдЬреЛ dash_core_components рдореЗрдВ рдирд┐рд╣рд┐рдд рд╣реИрдВред

рдЕрдЧрд▓реЗ рднрд╛рдЧ рдореЗрдВ, рд╣рдо рд╕реАрдЦреЗрдВрдЧреЗ рдХрд┐ рдЕрдкрдиреЗ рдкреЗрдЬ рдХреЛ рдХреИрд╕реЗ рдЗрдВрдЯрд░рдПрдХреНрдЯрд┐рд╡ рдмрдирд╛рдпрд╛ рдЬрд╛рдПред рдпрджрд┐ рдЖрдкрдХреЛ рдпрд╣ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдкрд╕рдВрдж рдЖрдпрд╛ рд╣реИ, рддреЛ рдПрдХ рдкреНрд▓рд╕ рдЪрд┐рд╣реНрди рдбрд╛рд▓реЗрдВ рдФрд░ рдореБрдЭреЗ рд╕рджрд╕реНрдпрддрд╛ рджреЗрдВред

* рдЕрдЧрд▓реЗ рднрд╛рдЧ рдХреЗ рд▓рд┐рдП рдЬрд▓реНрдж рд╣реА рдПрдХ рд▓рд┐рдВрдХ рд╣реЛрдЧрд╛ *

Source: https://habr.com/ru/post/hi431754/


All Articles