如何根据信息更改 plotly 上的文本位置?
How can I change textposition on plotly based on the information?
我有这个代码:
data = go.Scatter(
x=positionsX,
y=positionsY,
textposition='middle center',
mode='markers+text',
marker=dict(
color=color,
opacity=[1, 1, 1, 1, 1],
size=[100, 70, 60, 30, 25]),
text=list(sumByRegion.keys()),
)
我想根据 sumByRegion.keys() 值将文本位置更改为 'bottom left'。
sumByRegion.keys() 是 dict_values([55, 24, 16, 3, 2])
我现在有的在图片上:
image
编辑:
实际上,我正在寻找为每个单独的项目设置文本位置。因此,我使用了一个textposition数组来解决这个问题。
data = go.Scatter(
x=positionsX,
y=positionsY,
textposition=["middle center", "middle center", "middle center", "middle right", "middle left"],
mode='markers+text',
marker=dict(
color=color,
opacity=[1, 1, 1, 1, 1],
size=[100, 70, 60, 30, 25]),
text=list(sumByRegion.keys()),
)
如果您要显示的文本是字典格式,那么您可以将其转换为您要显示的格式。我不确定所需的格式是什么,但我添加了一个换行符并添加了一个百分号。
import plotly.graph_objects as go
sumByRegion = {'USA':55,'EU':24,'Asia':16,'Africa':2,'South America':3}
text = {'{}<br>{}%'.format(k,v) for k,v in zip(sumByRegion.keys(), sumByRegion.values())}
data = go.Scatter(
x=positionsX,
y=positionsY,
textposition='bottom left',
mode='markers+text',
marker=dict(
color=color,
opacity=[1, 1, 1, 1, 1],
size=[100, 70, 60, 30, 25]),
text=text,
)
我有这个代码:
data = go.Scatter(
x=positionsX,
y=positionsY,
textposition='middle center',
mode='markers+text',
marker=dict(
color=color,
opacity=[1, 1, 1, 1, 1],
size=[100, 70, 60, 30, 25]),
text=list(sumByRegion.keys()),
)
我想根据 sumByRegion.keys() 值将文本位置更改为 'bottom left'。
sumByRegion.keys() 是 dict_values([55, 24, 16, 3, 2])
我现在有的在图片上:
image
编辑:
实际上,我正在寻找为每个单独的项目设置文本位置。因此,我使用了一个textposition数组来解决这个问题。
data = go.Scatter(
x=positionsX,
y=positionsY,
textposition=["middle center", "middle center", "middle center", "middle right", "middle left"],
mode='markers+text',
marker=dict(
color=color,
opacity=[1, 1, 1, 1, 1],
size=[100, 70, 60, 30, 25]),
text=list(sumByRegion.keys()),
)
如果您要显示的文本是字典格式,那么您可以将其转换为您要显示的格式。我不确定所需的格式是什么,但我添加了一个换行符并添加了一个百分号。
import plotly.graph_objects as go
sumByRegion = {'USA':55,'EU':24,'Asia':16,'Africa':2,'South America':3}
text = {'{}<br>{}%'.format(k,v) for k,v in zip(sumByRegion.keys(), sumByRegion.values())}
data = go.Scatter(
x=positionsX,
y=positionsY,
textposition='bottom left',
mode='markers+text',
marker=dict(
color=color,
opacity=[1, 1, 1, 1, 1],
size=[100, 70, 60, 30, 25]),
text=text,
)