plotly:如何向3d散点图的标记添加额外信息?

3zwjbxry  于 2021-09-13  发布在  Java
关注(0)|答案(1)|浏览(319)

我想做的是将每个字符串信息只添加到每个气球中,如下面的捕获。但是没有在每个情节旁边显示它们,因为情节多的时候看起来很混乱。

我的数据框在下面,我将信息作为字符串添加到每一行。

import plotly.express as px
import numpy as np
import pandas as pd
from sklearn import datasets
from sklearn.manifold import TSNE

digits = datasets.load_digits()

X_reduced = TSNE(n_components=3, random_state=0).fit_transform(digits.data)

myinfo = ['ID' + str(i+1) for i in range(X_reduced.shape[0])]
df = pd.DataFrame(data=X_reduced, columns=columns, dtype='float')

df['info'] = myinfo          ## <- This is what i want to show in a balloon.

print(df)

              a         b          c    info
0     18.150545 -1.938995   1.192057     ID1
1     -8.773806  2.475938 -10.885373     ID2
2      4.305762  5.132519  -7.347726     ID3
3      5.327038  7.438313   8.786077     ID4
4    -15.810744 -9.374986   0.310686     ID5
...         ...       ...        ...     ...
1792   1.192152 -0.850245  12.781646  ID1793
1793  14.183956 -3.544634  -1.009673  ID1794
1794  -0.907307  2.596647  -4.307703  ID1795
1795   1.608326  0.700724   9.267643  ID1796
1796   1.809730  5.428222  -1.771497  ID1797

我尝试的是将字符串info指定为px.scatter_3d()的text='info',如下代码所示。

fig = px.scatter_3d(df, x='a', y='b', z='c', color='a', size_max=6 , text='info', opacity=0.7)

fig.show()

有人知道如何在情节之外消除这些信息吗?先谢谢你。

k2arahey

k2arahey1#

使用您的设置,您只需运行:

fig.update_traces(mode = 'markers')

…或:

fig.for_each_trace(lambda t: t.update(mode = 'markers'))

这将删除与标记关联的字符串,但会在hoverlabel中保留添加的信息:

这种方法可以让您保持通话畅通 px.scatter_3d(..., text='info') 就目前而言。
另一种方法是直接使用 custom_value 如后期打印三维打印注解中所述

相关问题