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:
这就是我的情节。
正如您在左下角的簇中看到的,大多数标签相互重叠。我现在希望有一个隐藏参数可以用来使这些标签更好地可见,并且我本能地寻找一种方法为所有这些标签添加白色背景,这样就可以遮挡后面数据点的标签他们。
我找到了一种解决方法,即不在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 轴的负端也是如此。