簡體   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