从有关此问题的其他问题(尽管在 R 中)我了解到您应该能够在 Plotly 中的(某些?)文本元素中使用 HTML。但是,如果我尝试在添加到绘图的文本中获取新行,它只会将 html 标签显示为文本,而不是“解析”它。 我也尝试添加 ' '但这只是被忽略了。
我正在使用的跟踪代码;
trace = go.Scattergl(
x=[0.5],
y=[4.5],
text=['A: {} <br> B: {}\nC: {}\nD: {}'.format(a, b, c, d)],
mode='text'
)
除此之外,我使用“标准”代码来生成图表;
traces = [trace]
layout = {
'xaxis':{
'range':[0,7],
'showgrid': False,
},
'yaxis':{
'range':[0,7],
'showgrid': False,
},
}
fig = dict(data=traces, layout=layout)
plot(fig)
在这种情况下如何添加新行?
我发现使用
<br>
可以在悬停文本中使用,但不能在直接放置在图形上的文本中使用。 这对于我的用例来说已经足够好了,也许它也会对你有帮助? 这是一个与您在问题中提供的示例类似的示例,它演示了其中的差异。 悬停文本和注释中使用的字符串相同,但中断仅在悬停文本中注册。
import plotly.graph_objects as go
a = 1
b = 2
c = 3
d = 4
trace = go.Scattergl(
x=[0.5],
y=[4.5],
text=f'A: {a} <br> B: {b}\nC: {c}\nD: {d}',
hoverinfo='text',
mode='markers+text'
)
traces = [trace]
layout = {
'xaxis':{
'range':[0,7],
'showgrid': False,
},
'yaxis':{
'range':[0,7],
'showgrid': False,
},
}
fig = go.Figure(data=traces, layout=layout)
fig.show(renderer='browser')
对于plotly Express:scatter3d
这里我首先将文本减少到最大数量 n_chars。然后我在一段时间后将文本分成换行符。连接函数中要使用的分隔符是
:
text_list_reduced: list[str] = ['<br>'.join(text[:n_chars].split('.')) for text in text_list]
fig = px.scatter_3d(x=df_data.x, y=df_data.y, z=df_data.z, color=df_data.label, text=text_list_reduced)