Luk*_*ang 7 python plotly plotly-dash
我尝试在网上寻找解决此问题的方法,但没有成功。我找到的最接近的解决方案是this,但是,它是在 R 中的,过去两天我一直在尝试在 Python 中寻找解决方案。
我已经弄乱了Plotly Dash 的交互式图形文档,并且 clickData 和hoverData 似乎只输出图表上单击/悬停的实际数据点的坐标数据。我的目标是通过在图表上单击两次鼠标来获取一对 x,y 坐标,以便我能够使用该对坐标在图表上画一条线。然而,Plotly 的 Dash 交互式绘图在提供不在实际数据点上的鼠标坐标数据方面似乎受到限制。是否有任何解决方案或我错过的文档的明显解决方案/部分?
import numpy as np
import pandas as pd
import plotly.express as px
import math, json
import dash
from dash.dependencies import Input, Output, State
from jupyter_dash import JupyterDash
GS = 100
fig = px.line(
x=np.linspace(0, 1, 300), y=(np.sin(np.linspace(0, math.pi * 3, 300)) / 2) + 0.5
).add_traces(
px.scatter(
x=np.repeat(np.linspace(0, 1, GS), GS), y=np.tile(np.linspace(0, 1, GS), GS)
)
.update_traces(marker_color="rgba(0,0,0,0)")
.data
)
# Build App
app = JupyterDash(__name__)
app.layout = dash.html.Div(
[dash.dcc.Graph(id="graph", figure=fig), dash.html.Div(id="where")]
)
@app.callback(
Output("where", "children"),
Input("graph", "clickData"),
)
def click(clickData):
if not clickData:
raise dash.exceptions.PreventUpdate
return json.dumps({k: clickData["points"][0][k] for k in ["x", "y"]})
# Run app and display result inline in the notebook
app.run_server(mode="inline")
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7194 次 |
| 最近记录: |