Dash㉗(マウス動作 複数選択)

複数選択 (selectedData属性)

selectedData属性を使うと、グラフ上のデータを複数選択することができます。

複数選択できるようにするためには、scatter関数の引数templateのキー‘layout’のclickmode属性に‘event+select’を設定します。(23行目)

また、コールバックの入力項目に‘selectedData’を設定します。(35行目)

[ソースコード]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
import json

import dash
import dash_core_components as dcc
import dash_html_components as html
import plotly.express as px
from dash.dependencies import Input, Output

gapminder = px.data.gapminder() # データの読み込み
gapminder2007 = gapminder[gapminder['year'] == 2007]

app = dash.Dash(__name__) # Dashインスタンスを生成

app.layout = html.Div(
[
html.H1('Gapminder Graph'),
# 散布図
dcc.Graph(
id='graph1',
figure=px.scatter(
gapminder2007, x='gdpPercap', y='lifeExp', hover_name='country',
template={'layout':{'clickmode':'event+select'}} # クリック+Shiftで複数データを選択
)
),
# ホバーデータを表示するコンポーネント
html.P(id='hover_text', style={'fontSize':'40', 'textAlign':'center'})
],
style={'width':'90%', 'fontSize':'40', 'textAlign':'center'}
)


# コールバック
@app.callback(
Output('hover_text', 'children'),
Input('graph1', 'selectedData') # GraphのselectedData属性を指定
)
def show_text(text):
return json.dumps(text)

if __name__ == '__main__':
app.run_server(debug=True) # アプリケーションを起動

[ブラウザで表示]

Shiftキーを押しながら、グラフ上のデータを選択すると複数選択でき、そのデータがグラフ下に表示されます。