【问题标题】:How to annotate difference between bars?如何注释条之间的差异?
【发布时间】:2020-12-12 12:22:27
【问题描述】:

我正在尝试使用注释来显示条形之间的差异。具体来说,显示所有条之间相对于第一个条的差异。

我的代码如下所示:

import plotly.graph_objects as go


lables = ['a','b','c']

values = [30,20,10]

difference = [ str(values[0] - x) for x in values[1:] ]


fig = go.Figure( data= go.Bar(x=lables,y=values,width = [0.5,0.5,0.5] ) )


fig.add_annotation( x=lables[0],y= values[0], 
                    xref="x",yref="y",
                    showarrow=True,arrowhead=7,
                    ax = 1200, ay= 0  )

fig.add_annotation( x = lables[1], y=values[0],
                    xref="x",yref="y",
                    showarrow=True,arrowhead=1,
                    ax = 0 , ay = 100,
                    text= difference[0]
                     )


fig.show()

结果图如下:

如您所见,我正在尝试使用注释来指示ab 之间的区别。但我不知道如何获取a 的水平线与b 顶部之间的垂直距离。

我试图让箭头指向水平线的bc 的顶部。我想知道有没有办法获得这个垂直距离,或者有没有其他方法可以达到相同的结果?

【问题讨论】:

    标签: python plotly plotly-python


    【解决方案1】:

    垂直距离可以通过以下方式轻松获得:

    diffs = [max(values) - v for v in values]
    

    唯一真正的挑战是正确获取fig.add_annotations() 的每个参数。 yanchoraxayref 的正确组合会给你这个情节:

    您可以在下面的 sn-p 中仔细查看详细信息。如果您不喜欢数字的位置,我们也可以解决。

    完整代码:

    import plotly.graph_objects as go
    
    
    labels = ['a','b','c']
    
    values = [30,20,10]
    
    diffs = [max(values) - v for v in values]
    
    diff_labels = dict(zip(labels, diffs))
    #print(diff_labels)
    
    fig = go.Figure( data= go.Bar(x=labels,y=values,width = [0.5,0.5,0.5] ) )
    
    for k, v in diff_labels.items():
        if v > 0:
            print(v)
            fig.add_annotation(x=k, y=max(values)-v, ax=0,
                               yanchor='bottom',
                               ay=max(values), ayref='y',
                               showarrow=True, arrowsize=2,
                               arrowhead=1,
                               text = v
                              )
            
    fig.add_traces(go.Scatter(x=labels, y=[max(values)]*3, mode = 'lines',
                              line=dict(color='black', width=1)))
            
    fig.show()
    

    【讨论】:

      猜你喜欢
      • 2014-06-30
      • 2019-12-26
      • 2016-11-23
      • 2010-09-24
      • 2018-07-28
      • 2015-03-26
      • 1970-01-01
      • 2018-07-07
      • 2014-12-22
      相关资源
      最近更新 更多