回答編集履歴

2

コード更新

2021/06/30 08:09

投稿

bsdfan
bsdfan

スコア4794

test CHANGED
@@ -10,7 +10,7 @@
10
10
 
11
11
  ### 追加
12
12
 
13
- ためしに作ってみました。
13
+ ためしに作ってみました。(コメントをうけてコードを更新しました)
14
14
 
15
15
  ```python
16
16
 
@@ -18,21 +18,33 @@
18
18
 
19
19
  import plotly.express as px
20
20
 
21
+ import plotly.graph_objects as go
22
+
21
23
  import streamlit as st
22
24
 
23
25
  from streamlit_plotly_events import plotly_events
26
+
27
+ import plotly.offline as offline
24
28
 
25
29
 
26
30
 
27
31
  df = pd.DataFrame({'X': [1, 1, 2, 2, 3, 3], 'Y': [1, 3, 2, 3, 1, 2]})
28
32
 
33
+ df2 = pd.DataFrame({'X': [0, 0.5, 1, 1.5, 2, 2.5], 'Y': [1, 3, 2, 3, 1, 2]})
29
34
 
30
35
 
31
- # Select other Plotly events by specifying kwargs
32
36
 
33
- fig = px.scatter(df, x='X', y='Y')
37
+ fig1 = px.scatter(df, x='X', y='Y')
34
38
 
35
- fig.update_layout(clickmode='select')
39
+ fig1.update_layout(clickmode='select')
40
+
41
+ fig2 = px.line(df2,x='X', y='Y')
42
+
43
+
44
+
45
+ fig = go.Figure(data=fig1.data + fig2.data)
46
+
47
+
36
48
 
37
49
  selected_points = plotly_events(fig, click_event=False, select_event=True)
38
50
 
@@ -42,6 +54,8 @@
42
54
 
43
55
  ```
44
56
 
57
+
58
+
45
59
  もうちょっとやりたいことが複雑なら、
46
60
 
47
61
  素直にdashを使った方がいいような気がします。

1

追加

2021/06/30 08:09

投稿

bsdfan
bsdfan

スコア4794

test CHANGED
@@ -5,3 +5,43 @@
5
5
 
6
6
 
7
7
  こちらのライブラリ [https://github.com/null-jones/streamlit-plotly-events](https://github.com/null-jones/streamlit-plotly-events) は使えないでしょうか。
8
+
9
+
10
+
11
+ ### 追加
12
+
13
+ ためしに作ってみました。
14
+
15
+ ```python
16
+
17
+ import pandas as pd
18
+
19
+ import plotly.express as px
20
+
21
+ import streamlit as st
22
+
23
+ from streamlit_plotly_events import plotly_events
24
+
25
+
26
+
27
+ df = pd.DataFrame({'X': [1, 1, 2, 2, 3, 3], 'Y': [1, 3, 2, 3, 1, 2]})
28
+
29
+
30
+
31
+ # Select other Plotly events by specifying kwargs
32
+
33
+ fig = px.scatter(df, x='X', y='Y')
34
+
35
+ fig.update_layout(clickmode='select')
36
+
37
+ selected_points = plotly_events(fig, click_event=False, select_event=True)
38
+
39
+
40
+
41
+ df.iloc[[v['pointIndex'] for v in selected_points]]
42
+
43
+ ```
44
+
45
+ もうちょっとやりたいことが複雑なら、
46
+
47
+ 素直にdashを使った方がいいような気がします。