Plotly 中文本标签的背景颜色?

bac*_*boi 5 python plotly scatter3d

我正在使用 Python 中的 Plotly 显示昏暗缩减的词嵌入的一部分。我正在使用 3D 散点图,到目前为止一切正常,使用以下代码(已分解):

fig = go.Figure()
trace = go.Scatter3d(
        x=df[0],
        y=df[1],
        z=df[2],
        text=df.index,
        mode="markers+text",
        textfont=dict(
            color=["crimson"]),
        marker=dict(
            size=3),
        hoverinfo="skip")

fig.add_trace(trace)

fig.show()
Run Code Online (Sandbox Code Playgroud)

我遇到的唯一问题是数据点的某些标签重叠,这导致它们乍一看不可读。

是否可以指定文本标签的背景颜色?

编辑:

我的前 5 行df看起来像这样,所有数据都是这样构造的。索引是单词,三列是它在 3D 空间中的位置。

                        0         1         2
chancellor       1.102989  0.416767  2.071260
abdicate         0.028073  1.156498  1.911484
overthrow        2.435294 -0.305266  0.998094
candidate        0.259697  0.648845  0.448700
elections        0.122355  0.815206  1.107913
Run Code Online (Sandbox Code Playgroud)

然而,我的问题实际上并不是关于数据,而是关于定制可视化的可能性。

编辑2:

这就是我的情节。

在此输入图像描述

正如您在左下角的簇中看到的,大多数标签相互重叠。我现在希望有一个隐藏参数可以用来使这些标签更好地可见,并且我本能地寻找一种方法为所有这些标签添加白色背景,这样就可以遮挡后面数据点的标签他们。

bac*_*boi 6

我找到了一种解决方法,即不在text跟踪定义中使用 - 参数,而是为每个数据点添加注释。代码现在看起来像这样:

trace = go.Scatter3d(
            x=df[0],
            y=df[1],
            z=df[2],
            mode="markers",
            marker=dict(size=3),
            hoverinfo="skip")
    
annos = []
first = True
for index, row in df.iterrows():
    if first:
        col = "black"
        first = False
    else:
        col = "black"
            
    anno = dict(x=row[0],
                y=row[1],
                z=row[2],
                text=index,
                showarrow=True,
                arrowhead=0,
                font=dict(color=col),
                ax=0,
                ay=-20,
                bgcolor="white",
                opacity=0.85)

    annos.append(anno)
        
fig = go.Figure()
fig.add_trace(trace)
fig.update_layout(scene=dict(annotations=annos)
Run Code Online (Sandbox Code Playgroud)

作为注释实现的标签现在具有白色背景,即使它们后面有更多数据点,也可以读取它们。遗憾的是,这些标签的分层并不遵循相机的视角,而仅遵循 y 轴上的位置。因此,具有最低 y 值的注释始终位于所有其他注释之后,即使相机位于 y 轴的负端也是如此。

在此输入图像描述