如何注释条之间的差异?

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


我的代码如下所示:


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

结果图如下所示:

http://img.mukewang.com/649111e3000159a806540294.jpg

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

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


翻过高山走不出你
浏览 95回答 1
1回答

智慧大石

垂直距离可以很容易地通过以下方式获得:diffs = [max(values) - v for v in values]唯一真正的挑战是让每个参数都fig.add_annotations()正确。yanchor和ax的正确组合ayref将为您提供此图:您可以在下面的代码片段中仔细查看详细信息。如果您不喜欢数字的位置,我们也可以解决。完整代码:import plotly.graph_objects as golabels = ['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()
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python