我正在尝试绘制带有误差条和数据标签的条形图,但我找不到如何更改文本的位置,以便误差条不会干扰标签。 ,这是代码:
x = [1, 2, 3, 4, 5, 6]
y = [100, 90, 80, 70, 60, 50]
y_err = [5, 6, 7, 8, 9, 10]
fig = go.Figure(data=go.Bar(x=x, y=y, error_y_array=y_err, text=y, textposition="inside"))
fig.show()
理想情况下,我希望标签位于栏的底部,但确保数据不被覆盖的任何其他方法也可以。我需要数据位于条形内并水平定向。谢谢!
我只是简单地注释每个条形,
textposition
的唯一有效参数是`['inside'、'outside'和'auto']。因此,在这种情况下,循环遍历列表并添加文本,如下所示:
import plotly.graph_objects as go
x = [1, 2, 3, 4, 5, 6]
y = [100, 90, 80, 70, 60, 50]
y_err = [5, 6, 7, 8, 9, 10]
fig = go.Figure(data=go.Bar(x=x, y=y, error_y_array=y_err))
i=0
text_height = 5
for x_val in x:
fig.add_annotation(
x=x_val,
y=text_height,
text=str(y[i]),
showarrow=False,
font=(dict(color='white'))
)
i = i+1
这是一个 hacky 解决方案,但如果文本标签足够短,您也可以向它们添加空格以强制它们位于错误栏的右侧或左侧。对于那些试图坚持情节表达的人来说是一个很好的解决方案。 🤷
x = [1, 2, 3, 4, 5, 6]
y = [100, 90, 80, 70, 60, 50]
y_labels = [' {}'.format(y_val) for y_val in y]
y_err = [5, 6, 7, 8, 9, 10]
fig = go.Figure(data=go.Bar(x=x, y=y, error_y_array=y_err, text=y_labels, textposition="outside"))
fig.show()