如何在Python中获取Plotly Dash Graph上的点击事件坐标数据?

2024-06-01 07:50:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我曾尝试在网络上导航以找到解决此问题的方法,但没有成功。我找到的最接近的解决方案是this,然而,它在R中,在过去的两天里我一直在尝试用Python寻找解决方案

我已经把Plotly Dash's documentation here on Interactive Graphing搞砸了,clickData和hoverData似乎只输出图形上单击/悬停的实际数据点上的坐标数据。我的目标是通过在图形上单击两次鼠标来获得一对x,y坐标,这样我就能够使用这对坐标在图形上画一条线。然而,Plotly的Dash交互式图形似乎在提供不在实际数据点上的鼠标坐标数据方面受到限制。有没有解决这个问题的办法,或者有没有我遗漏的明显的解决方案/文档的一部分


Tags: 数据方法网络图形hereondocumentationplotly
1条回答
网友
1楼 · 发布于 2024-06-01 07:50:41
  • 可以创建透明点的附加轨迹,这些透明点均匀分布在地物上
  • 然后是一个使用clickData回调的简单例子
  • 完整代码如下
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")

相关问题 更多 >