この文書の現在のバージョンと選択したバージョンの差分を表示します。
次のリビジョン | 前のリビジョン | ||
プログラミング:python:webアプリケーションフレームワーク:dash:基本構造 [2019/07/15 10:14] sotoyama 作成 |
プログラミング:python:webアプリケーションフレームワーク:dash:基本構造 [2019/07/15 13:48] (現在) sotoyama |
||
---|---|---|---|
ライン 1: | ライン 1: | ||
+ | {{indexmenu_n>2}} | ||
===== 基本構造 ===== | ===== 基本構造 ===== | ||
- | ==== インストール ==== | + | ==== 全体構造 ==== |
<code python> | <code python> | ||
import dash | import dash | ||
ライン 29: | ライン 31: | ||
], | ], | ||
'layout': { | 'layout': { | ||
- | 'title': 'Dash Data Visualization' | + | 'title': 'Sample Graph Data' |
} | } | ||
} | } | ||
ライン 40: | ライン 42: | ||
</code> | </code> | ||
+ | ==== レイアウト ==== | ||
+ | === ブロック === | ||
+ | <code python> | ||
+ | # div要素 | ||
+ | html.Div(children='出力文字列') | ||
+ | </code> | ||
+ | |||
+ | === 見出し === | ||
+ | <code python> | ||
+ | # h1要素 | ||
+ | html.H1(children='見出し1') | ||
+ | |||
+ | # h2要素 | ||
+ | html.H2(children='見出し2') | ||
+ | |||
+ | # h3要素 | ||
+ | html.H3(children='見出し3') | ||
+ | |||
+ | # h4要素 | ||
+ | html.H4(children='見出し4') | ||
+ | |||
+ | # h5要素 | ||
+ | html.H5(children='見出し5') | ||
+ | |||
+ | </code> | ||
+ | |||
+ | ==== フォーム ==== | ||
+ | <code python> | ||
+ | # ドロップダウン(単一選択) | ||
+ | dcc.Dropdown( | ||
+ | options=[ | ||
+ | {'label': '佐藤', 'value': 'sato'}, | ||
+ | {'label': '鈴木', 'value': 'suzuki'}, | ||
+ | {'label': '田中', 'value': 'tanaka'}, | ||
+ | ], | ||
+ | value='suzuki' | ||
+ | ), | ||
+ | html.Br(), | ||
+ | |||
+ | # ドロップダウン(複数選択) | ||
+ | dcc.Dropdown( | ||
+ | options=[ | ||
+ | {'label': '佐藤', 'value': 'sato'}, | ||
+ | {'label': '鈴木', 'value': 'suzuki'}, | ||
+ | {'label': '田中', 'value': 'tanaka'}, | ||
+ | ], | ||
+ | value=['sato', 'suzuki'], | ||
+ | multi=True | ||
+ | ), | ||
+ | html.Br(), | ||
+ | |||
+ | # ラジオボタン | ||
+ | dcc.RadioItems( | ||
+ | options=[ | ||
+ | {'label': '佐藤', 'value': 'sato'}, | ||
+ | {'label': '鈴木', 'value': 'suzuki'}, | ||
+ | {'label': '田中', 'value': 'tanaka'}, | ||
+ | ], | ||
+ | value='suzuki' | ||
+ | ), | ||
+ | html.Br(), | ||
+ | |||
+ | # チェックボックス | ||
+ | dcc.Checklist( | ||
+ | options=[ | ||
+ | {'label': '佐藤', 'value': 'sato'}, | ||
+ | {'label': '鈴木', 'value': 'suzuki'}, | ||
+ | {'label': '田中', 'value': 'tanaka'}, | ||
+ | ], | ||
+ | value=['suzuki', 'tanaka'] | ||
+ | ), | ||
+ | html.Br(), | ||
+ | |||
+ | # テキストボックス | ||
+ | dcc.Input(value='佐藤', type='text'), | ||
+ | html.Br(), | ||
+ | |||
+ | # スライダー | ||
+ | dcc.Slider( | ||
+ | min=0, | ||
+ | max=5, | ||
+ | marks={i:str(i) for i in range(1,6)}, | ||
+ | value=3 | ||
+ | ) | ||
+ | </code> | ||
+ | {{ :プログラミング:python:webアプリケーションフレームワーク:dash:dash_フォーム.jpg?direct&600 |}} | ||
+ | |||
+ | ==== グラフ ==== | ||
+ | === 棒グラフ === | ||
+ | <code python> | ||
+ | dcc.Graph( | ||
+ | id='example-graph', | ||
+ | figure={ | ||
+ | 'data': [ | ||
+ | {'x': [1, 2, 3, 4, 5], 'y': [2, 1, 3, 6, 8], 'type': 'bar', 'name': 'XXXX'}, | ||
+ | {'x': [1, 2, 3, 4, 5], 'y': [4, 9, 5, 6, 1], 'type': 'bar', 'name': 'YYYY'}, | ||
+ | ], | ||
+ | 'layout': { | ||
+ | 'title': 'Dash Data Visualization', | ||
+ | } | ||
+ | } | ||
+ | ) | ||
+ | </code> | ||
+ | {{ :プログラミング:python:webアプリケーションフレームワーク:dash:dash_棒グラフ.jpg?direct&600 |}} | ||
+ | |||
+ | === 折れ線グラフ === | ||
+ | <code python> | ||
+ | import plotly.graph_objs as go | ||
+ | |||
+ | # ~~~ 省略 ~~~ | ||
+ | |||
+ | dcc.Graph( | ||
+ | id='sample-line', | ||
+ | figure={ | ||
+ | 'data':[ | ||
+ | go.Scatter( | ||
+ | x=[1, 2, 3, 4, 5, 6], | ||
+ | y=[2, 4, 6, 8, 10, 12], | ||
+ | mode='lines', | ||
+ | opacity=0.7, | ||
+ | marker={ | ||
+ | 'size':15 | ||
+ | }, | ||
+ | name='XXXX' | ||
+ | ), | ||
+ | go.Scatter( | ||
+ | x=[1, 2, 3, 4, 5, 6], | ||
+ | y=[5, 10, 8, 16, 11, 20], | ||
+ | mode='lines', | ||
+ | opacity=0.7, | ||
+ | marker={ | ||
+ | 'size':15 | ||
+ | }, | ||
+ | name='YYYY' | ||
+ | ) | ||
+ | ], | ||
+ | 'layout': go.Layout( | ||
+ | xaxis={'title':'x軸'}, | ||
+ | yaxis={'title':'y軸'}, | ||
+ | width=1000, | ||
+ | height=500 | ||
+ | ) | ||
+ | } | ||
+ | ) | ||
+ | </code> | ||
+ | {{ :プログラミング:python:webアプリケーションフレームワーク:dash:dash_折れ線グラフ.jpg?direct&600 |}} | ||
+ | |||
+ | === 円グラフ === | ||
+ | <code python> | ||
+ | </code> | ||
+ | |||
+ | === 帯グラフ === | ||
+ | <code python> | ||
+ | </code> | ||
+ | |||
+ | |||
+ | === ヒスとグラム === | ||
+ | <code python> | ||
+ | </code> | ||
+ | |||
+ | |||
+ | === レーダーチャート === | ||
+ | <code python> | ||
+ | </code> | ||
+ | |||
+ | |||
+ | === 散布図 === | ||
+ | <code python> | ||
+ | import plotly.graph_objs as go | ||
+ | |||
+ | # ~~~ 省略 ~~~ | ||
+ | |||
+ | dcc.Graph( | ||
+ | id='sample-scatter', | ||
+ | figure={ | ||
+ | 'data':[ | ||
+ | go.Scatter( | ||
+ | x=[1, 4, 6, 9], | ||
+ | y=[10, 30, 20, 25], | ||
+ | mode='markers', | ||
+ | opacity=0.7, | ||
+ | marker={ | ||
+ | 'size':15 | ||
+ | }, | ||
+ | name='グループ1' | ||
+ | ), | ||
+ | go.Scatter( | ||
+ | x=[2, 8, 5, 1], | ||
+ | y=[5, 19, 12, 20], | ||
+ | mode='markers', | ||
+ | opacity=0.7, | ||
+ | marker={ | ||
+ | 'size':15 | ||
+ | }, | ||
+ | name='グループ2' | ||
+ | ) | ||
+ | ], | ||
+ | 'layout':go.Layout( | ||
+ | xaxis={'title':'x軸'}, | ||
+ | yaxis={'title':'y軸'}, | ||
+ | ) | ||
+ | } | ||
+ | ) | ||
+ | </code> | ||
+ | {{ :プログラミング:python:webアプリケーションフレームワーク:dash:dash_散布図.jpg?direct&600 |}} | ||
+ | |||
+ | === 箱ひげ図 === | ||
+ | <code python> | ||
+ | </code> | ||
+ | |||
+ | |||
+ | === 三角グラフ === | ||
+ | <code python> | ||
+ | </code> | ||
+ | |||
+ | ==== Markdown記法 ==== | ||
+ | <code python> | ||
+ | dcc.Markdown(''' | ||
+ | # 見出し1 | ||
+ | ## 見出し2 | ||
+ | |||
+ | - 箇条書き1 | ||
+ | - 箇条書き2 | ||
+ | - 箇条書き3 | ||
+ | - 箇条書き4 | ||
+ | ''') | ||
+ | </code> | ||
+ | {{ :プログラミング:python:webアプリケーションフレームワーク:dash:dash_markdown.jpg?direct&600 |}} | ||
+ | |||
+ | |||
+ | ==== Callback関数 ==== | ||
+ | <code python> | ||
+ | import dash | ||
+ | import dash_core_components as dcc | ||
+ | import dash_html_components as html | ||
+ | from dash.dependencies import Input, Output | ||
+ | |||
+ | # ~~~ 省略 ~~~ | ||
+ | |||
+ | app.layout = html.Div([ | ||
+ | dcc.Input(id='input-div', value='initial value', type='text'), | ||
+ | html.Div(id='output-div') | ||
+ | |||
+ | ]) | ||
+ | |||
+ | @app.callback( | ||
+ | Output(component_id='output-div', component_property='children'), | ||
+ | [Input(component_id='input-div', component_property='value')] | ||
+ | ) | ||
+ | |||
+ | def update(input_value): | ||
+ | return 'You entered {}'.format(input_value) | ||
+ | </code> | ||
+ | {{ :プログラミング:python:webアプリケーションフレームワーク:dash:dash_callback.jpg?direct&600 |}} | ||