既然你专门问如何
将它们添加到黄色框内
您并不是真正询问如何注释 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()
使用 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()