如何解决如何注释酒吧之间的差异? 完整代码:
我正在尝试显示使用注释的小节之间的差异。具体来说,显示所有条相对于第一条之间的差异。
我的代码如下所示:
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],arrowhead=1,ax = 0,ay = 100,text= difference[0]
)
fig.show()
结果图如下:
如您所见,我正在尝试使用注释来指示a
和b
之间的区别。但是我不知道如何获得a
的水平线和b
的顶部之间的垂直距离。
我正在尝试使箭头指向水平线b
和c
的顶部。我想知道是否有一种方法可以获取此垂直距离,或者是否有其他方法可以达到相同的结果?
解决方法
垂直距离很容易获得:
diffs = [max(values) - v for v in values]
唯一的挑战是正确设置fig.add_annotations()
的每个参数。 yanchor
,ax
和ayref
的正确组合将为您提供以下绘图:
您可以在下面的代码段中仔细查看详细信息。而且,如果您不喜欢数字的位置,我们也可以解决。
完整代码:
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()
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。