{{indexmenu_n>2}}
===== 基本構造 =====
==== 全体構造 ====
import dash
import dash_core_components as dcc
import dash_html_components as html
# 外部スタイルシート
external_stylesheets = ['https://codepen.io/chriddyp/pen/bWLwgP.css']
# Dashアプリケーション生成
app = dash.Dash(__name__, external_stylesheets=external_stylesheets)
# HTMLレイアウト設定
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, 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': 'Sample Graph Data'
}
}
)
])
# アプリケーションサーバ起動
if __name__ == '__main__':
app.run_server(debug=True)
==== レイアウト ====
=== ブロック ===
# div要素
html.Div(children='出力文字列')
=== 見出し ===
# 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')
==== フォーム ====
# ドロップダウン(単一選択)
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
)
{{ :プログラミング:python:webアプリケーションフレームワーク:dash:dash_フォーム.jpg?direct&600 |}}
==== グラフ ====
=== 棒グラフ ===
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',
}
}
)
{{ :プログラミング:python:webアプリケーションフレームワーク:dash:dash_棒グラフ.jpg?direct&600 |}}
=== 折れ線グラフ ===
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
)
}
)
{{ :プログラミング:python:webアプリケーションフレームワーク:dash:dash_折れ線グラフ.jpg?direct&600 |}}
=== 円グラフ ===
=== 帯グラフ ===
=== ヒスとグラム ===
=== レーダーチャート ===
=== 散布図 ===
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軸'},
)
}
)
{{ :プログラミング:python:webアプリケーションフレームワーク:dash:dash_散布図.jpg?direct&600 |}}
=== 箱ひげ図 ===
=== 三角グラフ ===
==== Markdown記法 ====
dcc.Markdown('''
# 見出し1
## 見出し2
- 箇条書き1
- 箇条書き2
- 箇条書き3
- 箇条書き4
''')
{{ :プログラミング:python:webアプリケーションフレームワーク:dash:dash_markdown.jpg?direct&600 |}}
==== Callback関数 ====
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)
{{ :プログラミング:python:webアプリケーションフレームワーク:dash:dash_callback.jpg?direct&600 |}}