Plotly 条形图上的文本被错误栏遮挡

问题描述 投票:0回答:2

我正在尝试绘制带有误差条和数据标签的条形图,但我找不到如何更改文本的位置,以便误差条不会干扰标签。 This is an example of what I currently have,这是代码:

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()

理想情况下,我希望标签位于栏的底部,但确保数据不被覆盖的任何其他方法也可以。我需要数据位于条形内并水平定向。谢谢!

python graph format plotly bar-chart
2个回答
1
投票

我只是简单地注释每个条形,

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

输出:


0
投票

这是一个 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()
© www.soinside.com 2019 - 2024. All rights reserved.