教えていただきたいのですが、
現在、Streamlitを使って、ある横断の表示をPlotlyにて行っているのですが、
Plotly自体に選択するモードがあり、選択自体はできるのですが、
選択した点の表示が上手くできません。(点の座標)
具体的には、横断を間引き前のデータ(線データとして表示)
間引き後のデータ(マーカ表示)
で、間引き後のデータを選択して、それを下に表として表示したいということです。
どうすればよいか、お分かりになる方がいれば、教えていただければと思います。
以下URLに記載されている方法が一番やりたいことに近いのですが、
それとの違いは、
1.点が1種類であること
2.VBOXHBOXがStreamlitでは動かないため、別の方法が必要。
https://plotly.com/python/v3/selection-events/
こちらで記載したソースは以下になります。
よろしくお願いいたします。
import plotly.graph_objs as go
import plotly.offline as py
import streamlit as st
import pandas as pd
import numpy as np
from ipywidgets import HBox, VBox
df = pd.read_excel('test_oudan_point.xlsx',sheet_name='before')
f = go.FigureWidget([
go.Scatter(y = df['Y'], x = df['X'], mode = 'markers')])
scatter = f.data[0]
scatter.marker.opacity = 1
Create a table FigureWidget that updates on selection from points in the scatter plot of f
t = go.FigureWidget([go.Table(
header=dict(values=['X','Y'],
fill = dict(color='#C2D4FF'),
align = ['left'] * 5),
cells=dict(values=[df[col] for col in ['X','Y']],
fill = dict(color='#F5F8FF'),
align = ['left'] * 5))])
def selection_fn(trace,points,selector):
t.data[0].cells.values = [df.loc[points.point_inds][col] for col in ['X','Y']]
scatter.on_selection(selection_fn)
Put everything together
VBox((HBox(),f,t))
st.plotly_chart(go.Figure(data=f),use_container_width=True)
st.plotly_chart(go.Figure(data=t),use_container_width=True)
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/06/30 05:40 編集
2021/06/30 06:01
2021/06/30 06:08
2021/06/30 06:12
2021/06/30 06:24
2021/06/30 06:25
2021/06/30 06:32
2021/06/30 07:12
2021/06/30 08:13