【问题标题】:Background colour for text labels in Plotly?Plotly中文本标签的背景颜色?
【发布时间】:2020-10-28 00:14:20
【问题描述】:

我正在用 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()

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

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

编辑:

我的df 的前 5 行是这样的,所有的数据都是这样组织的。索引是单词,三列是它在 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

但是,我的问题实际上并不在于数据,而是在于自定义可视化的可能性。

编辑2:

这就是我的情节。

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

【问题讨论】:

  • @bigbounty 谢谢,不过这里只讲整个剧情的背景色。我正在寻找只有数据点标签的背景颜色。
  • @backendboi 你介意生成一个mcve吗?特别是df 的样本会很棒。
  • @rpanai 感谢您指出这一点,我刚刚添加了更多信息。我不太确定如何在代码中(简明扼要地)初始化数据框,因为它是更复杂操作的产物。
  • 对我来说这听起来像是一个错误。您是否尝试过将文本显式添加为here

标签: python plotly scatter3d


【解决方案1】:

我找到了一种解决方法,即不在跟踪定义中使用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)

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

【讨论】:

    猜你喜欢
    • 2018-03-14
    • 2018-01-04
    • 1970-01-01
    • 1970-01-01
    • 2019-10-14
    • 2016-05-15
    • 1970-01-01
    • 1970-01-01
    • 2015-04-13
    相关资源
    最近更新 更多