繁体   English   中英

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

[英]How to obtain Click Event Coordinate Data on Plotly Dash Graph in Python?

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

我已经在交互式图形上弄乱了Plotly Dash 的文档,并且 clickData 和 hoverData 似乎只输出图表上被点击/悬停的实际数据点的坐标数据。 我的目标是通过在图形上单击两次鼠标获得一对 x,y 坐标,以便我能够使用该对坐标在图形上绘制一条线。 然而,似乎 Plotly 的 Dash Interactive Graphing 在提供不在实际数据点上的鼠标坐标数据的能力方面受到限制。 是否有任何解决方法或我错过的明显解决方案/文档的一部分?

  • 您可以创建额外的透明点跟踪,这些透明点均匀地散布在整个图形中
  • 那么这是一个使用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")

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM