質問編集履歴

9

修正

2021/07/05 00:28

投稿

Seven_Sea
Seven_Sea

スコア23

test CHANGED
File without changes
test CHANGED
@@ -10,7 +10,7 @@
10
10
 
11
11
  よろしくお願いします。
12
12
 
13
-
13
+ ```python
14
14
 
15
15
 
16
16
 
@@ -91,3 +91,7 @@
91
91
  except:
92
92
 
93
93
  break
94
+
95
+
96
+
97
+ ```

8

内容の修正

2021/07/05 00:27

投稿

Seven_Sea
Seven_Sea

スコア23

test CHANGED
@@ -1 +1 @@
1
- plotlyのグラフ更新(streamlit)
1
+ plotlyのグラフ表示の更新
test CHANGED
@@ -1,30 +1,16 @@
1
- 現在、Plotlyでのグラフ表示をしてい
1
+ 現在、Streamlitを使って、グラフ表示されている点を選択ると
2
2
 
3
- 当初描画されているグラフを下の数値を使って更新したいです
3
+ グラフ更新され、先ほど選択した点が消えた状態になれば良ですが、
4
4
 
5
- 何か方法どありますでしょうか??
5
+ 現状は、どんどん新しいグラフが追加されていくようにっております
6
6
 
7
- 一応、下もので、削除はされのですが、削除するたびに更新ではなく、
7
+ これを1つグラフが更新されるように修正したいのですが
8
8
 
9
- グラフが新しく作成さる状態になりした。
9
+ どなたか教えていただけばと思いす。
10
10
 
11
- また、エラーも出るうになってまっています
11
+ くお願ます
12
-
13
- *******************************************************
14
-
15
- DuplicateWidgetID: There are multiple identical st.streamlit_plotly_events.plotly_events widgets with the same generated key.
16
12
 
17
13
 
18
-
19
- When a widget is created, it's assigned an internal key based on its structure. Multiple widgets with an identical structure will result in the same internal key, which causes this error.
20
-
21
-
22
-
23
- To fix this error, please pass a unique key argument to st.streamlit_plotly_events.plotly_events.
24
-
25
- *******************************************************
26
-
27
- よろしくお願いいたします。
28
14
 
29
15
 
30
16
 
@@ -50,11 +36,19 @@
50
36
 
51
37
  aaa = st.checkbox('AAA')
52
38
 
39
+ counter = 0
40
+
53
41
 
54
42
 
55
43
  while aaa == True:
56
44
 
57
45
  st.write(df)
46
+
47
+ st.write(counter)
48
+
49
+ key = "hover" +'_'+ str(counter)
50
+
51
+ st.write(key)
58
52
 
59
53
  fig1 = px.scatter(df, x='X', y='Y',color_discrete_sequence=["red"])
60
54
 
@@ -64,12 +58,36 @@
64
58
 
65
59
  fig = go.Figure(data=fig1.data + fig2.data)
66
60
 
67
- selected_points = plotly_events(fig, click_event=False, select_event=True)
61
+ selected_points = plotly_events(
68
62
 
69
- df_final = df.iloc[[v['pointIndex'] for v in selected_points]]
63
+ fig,
70
64
 
71
- st.write(df_final)
65
+ click_event = False,
72
66
 
73
- st.write('削除後の点は以下')
67
+ select_event = True,
74
68
 
69
+ override_height = 500,
70
+
71
+ override_width = "100%",
72
+
73
+ key = key
74
+
75
+ )
76
+
77
+ try:
78
+
79
+ selected_points = eval(selected_points)
80
+
81
+ df_final = df.iloc[[v['pointIndex'] for v in selected_points]]
82
+
83
+ st.write(df_final)
84
+
85
+ st.write('削除後の点は以下')
86
+
75
- df = df[~df['X'].isin(df_final['X'])]
87
+ df = df[~df['X'].isin(df_final['X'])]
88
+
89
+ counter = counter + 1
90
+
91
+ except:
92
+
93
+ break

7

ソース変更、文言の修正

2021/07/03 10:16

投稿

Seven_Sea
Seven_Sea

スコア23

test CHANGED
@@ -1 +1 @@
1
- plotlyのグラフ更新(streamlit)
1
+ plotlyのグラフ更新(streamlit)
test CHANGED
@@ -4,9 +4,25 @@
4
4
 
5
5
  何か方法などありますでしょうか??
6
6
 
7
- ソース内でいうと最終的出てきたdf_final2を使ってscatterを描画したい(更新したい)す。
7
+ 一応、下のもの、削除はされてくのですが削除するたびに更新ではなく、
8
8
 
9
- みに、px.lineの値はそのまです
9
+ グラフが新しく作成される状態にした
10
+
11
+ また、エラーも出るようになってしまっています。
12
+
13
+ *******************************************************
14
+
15
+ DuplicateWidgetID: There are multiple identical st.streamlit_plotly_events.plotly_events widgets with the same generated key.
16
+
17
+
18
+
19
+ When a widget is created, it's assigned an internal key based on its structure. Multiple widgets with an identical structure will result in the same internal key, which causes this error.
20
+
21
+
22
+
23
+ To fix this error, please pass a unique key argument to st.streamlit_plotly_events.plotly_events.
24
+
25
+ *******************************************************
10
26
 
11
27
  よろしくお願いいたします。
12
28
 
@@ -32,38 +48,28 @@
32
48
 
33
49
 
34
50
 
35
-
36
-
37
- fig1 = px.scatter(df, x='X', y='Y',color_discrete_sequence=["red"])
38
-
39
- fig2 = px.line(df2,x='X', y='Y')
40
-
41
- fig1.update_layout(clickmode='select')
51
+ aaa = st.checkbox('AAA')
42
-
43
- fig = go.Figure(data=fig1.data + fig2.data)
44
-
45
- selected_points = plotly_events(fig, click_event=False, select_event=True)
46
52
 
47
53
 
48
54
 
49
- df_final = df.iloc[[v['pointIndex'] for v in selected_points]]
55
+ while aaa == True:
50
56
 
51
- st.write(df_final)
57
+ st.write(df)
52
58
 
59
+ fig1 = px.scatter(df, x='X', y='Y',color_discrete_sequence=["red"])
53
60
 
61
+ fig2 = px.line(df2,x='X', y='Y')
54
62
 
55
- delete_button = st.button('削除')
63
+ fig1.update_layout(clickmode='select')
56
64
 
65
+ fig = go.Figure(data=fig1.data + fig2.data)
57
66
 
67
+ selected_points = plotly_events(fig, click_event=False, select_event=True)
58
68
 
69
+ df_final = df.iloc[[v['pointIndex'] for v in selected_points]]
70
+
59
- if delete_button == True:
71
+ st.write(df_final)
60
72
 
61
73
  st.write('削除後の点は以下')
62
74
 
63
- df_final2 = df2[~df2['X'].isin(df_final['X'])]
75
+ df = df[~df['X'].isin(df_final['X'])]
64
-
65
- st.write(df_final2)
66
-
67
- else:
68
-
69
- st.write('まだ')

6

内容の修正

2021/07/02 10:44

投稿

Seven_Sea
Seven_Sea

スコア23

test CHANGED
@@ -1 +1 @@
1
- streamlitでのグラフの更新
1
+ plotlyのグラフの更新(streamlit)
test CHANGED
@@ -1,10 +1,6 @@
1
- streamlitを使ってグラフ表示をしています。
1
+ 現在、Plotlyでのグラフ表示をしています。
2
2
 
3
- その中で、変更前の数値を使ってグラフを描画しており、
4
-
5
- 何か計算(解析)した値がでしだ、前のグラフを計算後の数値を使って更新したいと思っております。
3
+ 当初描画されてグラフをの数値を使って更新したいす。
6
-
7
-
8
4
 
9
5
  何か方法などありますでしょうか??
10
6
 

5

修正

2021/07/02 05:51

投稿

Seven_Sea
Seven_Sea

スコア23

test CHANGED
@@ -1 +1 @@
1
- shuusei streamlitでのグラフの更新(計算後の値を使う)
1
+ streamlitでのグラフの更新
test CHANGED
File without changes

4

修正

2021/07/01 05:27

投稿

Seven_Sea
Seven_Sea

スコア23

test CHANGED
@@ -1 +1 @@
1
- streamlitでのグラフの更新(計算後の値を使う)
1
+ shuusei streamlitでのグラフの更新(計算後の値を使う)
test CHANGED
@@ -36,6 +36,8 @@
36
36
 
37
37
 
38
38
 
39
+
40
+
39
41
  fig1 = px.scatter(df, x='X', y='Y',color_discrete_sequence=["red"])
40
42
 
41
43
  fig2 = px.line(df2,x='X', y='Y')
@@ -52,6 +54,20 @@
52
54
 
53
55
  st.write(df_final)
54
56
 
55
- df_final2 = df2[~df2['X'].isin(df_final['X'])]
56
57
 
58
+
59
+ delete_button = st.button('削除')
60
+
61
+
62
+
63
+ if delete_button == True:
64
+
65
+ st.write('削除後の点は以下')
66
+
67
+ df_final2 = df2[~df2['X'].isin(df_final['X'])]
68
+
57
- st.write(df_final2)
69
+ st.write(df_final2)
70
+
71
+ else:
72
+
73
+ st.write('まだ')

3

修正

2021/07/01 04:47

投稿

Seven_Sea
Seven_Sea

スコア23

test CHANGED
File without changes
test CHANGED
@@ -9,6 +9,8 @@
9
9
  何か方法などありますでしょうか??
10
10
 
11
11
  ソース内でいうと、最終的に出てきたdf_final2を使ってscatterを描画したい(更新したい)です。
12
+
13
+ ちなみに、px.lineの値はそのままです。
12
14
 
13
15
  よろしくお願いいたします。
14
16
 

2

書式の改善

2021/07/01 04:43

投稿

Seven_Sea
Seven_Sea

スコア23

test CHANGED
File without changes
test CHANGED
@@ -34,8 +34,6 @@
34
34
 
35
35
 
36
36
 
37
- # Select other Plotly events by specifying kwargs
38
-
39
37
  fig1 = px.scatter(df, x='X', y='Y',color_discrete_sequence=["red"])
40
38
 
41
39
  fig2 = px.line(df2,x='X', y='Y')

1

ソース追加

2021/07/01 04:41

投稿

Seven_Sea
Seven_Sea

スコア23

test CHANGED
@@ -1 +1 @@
1
- streamlitでのループ(計算結果を使ってグラフの更新)
1
+ streamlitでのグラフの更新(計算後の値を使う
test CHANGED
@@ -1,9 +1,57 @@
1
- streamlitを使ってグラフ表示をしているのでが、
1
+ streamlitを使ってグラフ表示をしてい
2
2
 
3
- グラフ内値を選択後選択された数値を削除するのですが
3
+ その中で、変更前の数値を使ってグラフを描画しており
4
4
 
5
- その削除された値を使ってグラフを更新したいと思っているのでが、
5
+ 何か計算(解析)した値がでしだい、前のグラフ計算後の数値を使って更新したいと思っておりま
6
+
7
+
6
8
 
7
9
  何か方法などありますでしょうか??
8
10
 
11
+ ソース内でいうと、最終的に出てきたdf_final2を使ってscatterを描画したい(更新したい)です。
12
+
9
13
  よろしくお願いいたします。
14
+
15
+
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
+ import plotly.offline as offline
26
+
27
+ import plotly.graph_objects as go
28
+
29
+
30
+
31
+ df = pd.DataFrame({'X': [1, 2, 3, 4, 5, 6], 'Y': [1, 2, 3, 4, 5, 6]})
32
+
33
+ df2 = pd.DataFrame({'X': [1, 2, 3, 4, 5, 6], 'Y': [1, 2, 3, 4, 5, 6]})
34
+
35
+
36
+
37
+ # Select other Plotly events by specifying kwargs
38
+
39
+ fig1 = px.scatter(df, x='X', y='Y',color_discrete_sequence=["red"])
40
+
41
+ fig2 = px.line(df2,x='X', y='Y')
42
+
43
+ fig1.update_layout(clickmode='select')
44
+
45
+ fig = go.Figure(data=fig1.data + fig2.data)
46
+
47
+ selected_points = plotly_events(fig, click_event=False, select_event=True)
48
+
49
+
50
+
51
+ df_final = df.iloc[[v['pointIndex'] for v in selected_points]]
52
+
53
+ st.write(df_final)
54
+
55
+ df_final2 = df2[~df2['X'].isin(df_final['X'])]
56
+
57
+ st.write(df_final2)