Plotly 3D 绘图注释

问题描述 投票:0回答:2

我正在尝试生成随机 3D 散点图,其中每个点都有一个标签。我怎样才能添加这些标签?我想将它们添加到黄色框中。

python annotations plotly label
2个回答
2
投票

既然你专门问如何

将它们添加到黄色框内

您并不是真正询问如何注释 3D 图表(您可以使用 3D 注释 来实现),而是真正询问如何自定义悬停信息。如果您愿意使用

plotly.express
,则可以在
custom_data
中使用
px.scatter_3D()
来包含有关散点图中未显示的第四个变量的信息:

fig = px.scatter_3d(df, x='sepal_length', y='sepal_width', z='petal_width',
                        color='petal_length', size='petal_length', size_max=18,
                        symbol='species', opacity=0.7,
                        custom_data = ['category']
                   )

temp1 = fig.data[0].hovertemplate
fig.update_traces(hovertemplate = temp1 + '<br>' + "Category: %{customdata[0]}")

完整代码:

import plotly.express as px
df = px.data.iris()
category = {'setosa':'flower', 'versicolor': 'vegetable', 'virginica': 'not a flower'}
df['category'] = df['species'].map(category)
fig = px.scatter_3d(df, x='sepal_length', y='sepal_width', z='petal_width',
                        color='petal_length', size='petal_length', size_max=18,
                        symbol='species', opacity=0.7,
                        custom_data = ['category']
                   )

temp1 = fig.data[0].hovertemplate
fig.update_traces(hovertemplate = temp1 + '<br>' + "Category: %{customdata[0]}")

fig.update_layout(margin=dict(l=0, r=0, b=0, t=0))
fig.show()

0
投票

使用 plotly graph_objects 的最小示例:

import numpy as np
import plotly.graph_objects as go

# create a cube mesh, 5 x 5 x 5 points
x, y, z = np.meshgrid(np.linspace(-1, 1, 5), np.linspace(-1, 1, 5), np.linspace(-1, 1, 5))
values = np.sqrt(x**2 + y**2 + z**2)  # just a dummy value for each point

# create the plot
fig = go.Figure(
    data=[
        go.Scatter3d(
            x=x.flatten(),
            y=y.flatten(),
            z=z.flatten(),
            mode="markers",
            marker=dict(size=5, color=values.flatten()),
            hovertext=[f"value={v:.3f}" for v in values.flatten()], # <--  hover text here
        )
    ]
)
fig.show()

© www.soinside.com 2019 - 2024. All rights reserved.