Python 如何在Plotly中悬停在一个点上显示图片

Python 如何在Plotly中悬停在一个点上显示图片

Plotly是一个开源的Python绘图库,可以生成多种类型的图表。Python用户可以使用Plotly创建交互式的基于Web的可视化,可以在Jupyter笔记本中显示,保存为独立的HTML文件,或作为Dash的一部分在Web应用中使用。Plotly还可以用于静态文档发布和桌面编辑器,例如PyCharm和Spyder。

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

在本教程中,我们将展示如何在单个浏览器页面上将多个图形添加到Plotly Dash应用程序中。

按照下面给出的步骤在单个页面上生成Dash应用程序。

步骤1

导入Dash库。

import dash

步骤2

导入Dash核心组件, dcchtml 。我们将使用 dcc.Graph() 方法来设置高度和宽度的坐标风格。

from dash import dcc, html

步骤3

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

from dash.dependencies import Input, Output

步骤4

导入 plotly.express 模块,并将其别名为 px 。我们将使用这个方法生成图形。

import plotly.express as px

步骤5

使用Pandas模块生成数据集。

#generate dataframe
df = pd.DataFrame(
   dict(
      x=[1, 2],
      y=[2, 4],
      images=[dogImage,catImage],
   )
)

步骤6

设置来自特定 URL 的图像。示例 URL 定义如下:

dogImage = "data:image/png;base64,
catImage = "data:image/png;base64,

步骤7

使用X和Y坐标创建散点图 −

# create scatter plot with x and y coordinates
fig = px.scatter(df, x="x", y="y",custom_data=["images"])

步骤8

使用以下命令创建 main 函数,以运行App服务器−

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

步骤9

使用 update_layout() 方法来进行点击模式,使用 update_traces() 方法来设置标记的大小。

# Update layout and update traces
fig.update_layout(clickmode='event+select')
fig.update_traces(marker_size=20)

步骤10

生成应用程序布局以显示Dash图表。定义如下:

# Create app layout to show dash graph
app.layout = html.Div(
   [
      dcc.Graph(
         id="graph_interaction",
         figure=fig,
      ),
      html.Img(id='image', src='')
   ]
)

步骤11

创建 callback() 函数,在特定坐标上悬停数据,如下所示 −

@app.callback(
   Output('image', 'src'),
   Input('graph_interaction', 'hoverData'))

def open_url(hoverData):
   if hoverData:
      return hoverData["points"][0]["customdata"][0]
   else:
      raise PreventUpdate

# Create app layout to show dash graph
app.layout = html.Div(
   [
      dcc.Graph(
         id="graph_interaction",
         figure=fig,
      ),
      html.Img(id='image', src='')
   ]
)

示例

在悬停的Dash图上显示图像的完整代码。

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

# Create dash app
app = dash.Dash(__name__)

# Set dog and cat images
dogImage = "https://www.iconexperience.com/_img/v_collection_png/256x256/shadow/dog.png"
catImage = "https://d2ph5fj80uercy.cloudfront.net/06/cat3602.jpg"

# Generate dataframe
df = pd.DataFrame(
   dict(
      x=[1, 2],
      y=[2, 4],
      images=[dogImage,catImage],
   )
)

# Create scatter plot with x and y coordinates
fig = px.scatter(df, x="x", y="y",custom_data=["images"])

# Update layout and update traces
fig.update_layout(clickmode='event+select')
fig.update_traces(marker_size=20)

# Create app layout to show dash graph
app.layout = html.Div(
   [
      dcc.Graph(
         id="graph_interaction",
         figure=fig,
      ),
      html.Img(id='image', src='')
   ]
)

# html callback function to hover the data on specific coordinates
@app.callback(
   Output('image', 'src'),
   Input('graph_interaction', 'hoverData'))
   def open_url(hoverData):
   if hoverData:
      return hoverData["points"][0]["customdata"][0]
   else:
      raise PreventUpdate

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中悬停在一个点上显示图片

现在,将鼠标悬停在坐标(1,2)上,您将看到以下输出 –

Python 如何在Plotly中悬停在一个点上显示图片

同样,当您将鼠标悬停在第二个点上时,将产生以下输出 –

Python 如何在Plotly中悬停在一个点上显示图片

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程