Python 如何通过点击Plotly中的数据点打开URL

Python 如何通过点击Plotly中的数据点打开URL

Plotly支持两个不同的库:“Plotly在Dash应用中的图形”和“Plotly图形对象和Plotly Express”。

Dash是一个Python框架,用于创建交互式基于Web的仪表板应用程序。例如, dash 库将所有必需的库添加到基于Web的仪表板应用程序中。

导入 dash 核心组件和HTML组件。添加plotly.express方法生成图形。使用 Dcc.Graph() 方法设置高度和宽度坐标的样式。

按照以下步骤通过点击数据点打开URL。

步骤1

导入Dash库。

import dash

步骤2

导入Dash核心组件, dcchtml

from dash import dcc, html

步骤3

使用以下模块导入Dash的依赖项

from dash.dependencies import Input,Output

步骤4

导入 plotly.express 模块并将其别名为 px

import plotly.express as px

步骤5

使用 pandas 模块生成数据集。让我们使用以下方法生成一个数据集,并将 URL 添加到 dataframe 字典中。

df = pd.DataFrame(
   dict(
      x=[1, 2],
      y=[2, 4],
      urls=["https://www.tutorialspoint.com","https://plotly.com/dash/"],
   )
)

步骤6

使用URL坐标生成散点图,

fig = px.scatter(df, x="x", y="y",custom_data=["urls"])

步骤7

创建 update_layout() 方法来执行连续点击并设置标记大小的追踪。它定义如下,

fig.update_layout(clickmode='event+select')
fig.update_traces(marker_size=20)

步骤8

Div节中生成HTML子元素的应用布局。如下所定义,

app.layout = html.Div([
   dcc.Graph(
      id="graph_interaction",
      figure=fig,
   ),
   html.Pre(id='data')
])

步骤9

生成“url onclick”事件的函数。我们还将设置一个“if”条件来执行浏览器 onclick 事件。如下所示定义:

@app.callback(
   Output('data', 'children'),
   Input('graph_interaction', 'clickData'))

def open_url(clickData):
   if clickData:

webbrowser.open(clickData["points"][0]["customdata"][0])
   else:
raise PreventUpdate

步骤10

创建主函数以运行服务器。

if __name__ == '__main__':
app.run_server(debug=True)

示例

点击Plotly中的一个数据点来打开URL的完整代码如下:

import webbrowser
import dash
from dash.exceptions import PreventUpdate
from dash import dcc, html
from dash.dependencies import Input, Output
import plotly.express as px
import pandas as pd
import json

app = dash.Dash(__name__)
df = pd.DataFrame(
   dict(
      x=[1, 2],
      y=[2, 4],
      urls=["https://www.tutorialspoint.com","https://plotly.com/dash/"],
   )
)
fig = px.scatter(df, x="x", y="y",custom_data=["urls"])
fig.update_layout(clickmode='event+select')
fig.update_traces(marker_size=20)

app.layout = html.Div(
   [
      dcc.Graph(
         id="graph_interaction",
         figure=fig,
      ),
      html.Pre(id='data')
   ]
)

@app.callback(
   Output('data', 'children'),
   Input('graph_interaction', 'clickData'))
def open_url(clickData):
   if clickData:
   webbrowser.open(clickData["points"][0]["customdata"][0
])
   else:
      raise PreventUpdate
      # return json.dumps(clickData, indent=2)

if __name__ == '__main__':
app.run_server(debug=True)

输出

在控制台上会显示以下输出。

Dash is running on http://127.0.0.1:8050/

 * Serving Flask app 'main'
 * Debug mode: on

点击这个URL,它会在浏览器上显示输出 −

Python 如何通过点击Plotly中的数据点打开URL

如果你点击这个节点,它将会跳转到给定的URL链接。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程