为了账号安全,请及时绑定邮箱和手机立即绑定

Plotly:如何给y轴的不同区间添加注解?

Plotly:如何给y轴的不同区间添加注解?

守候你守候我 2023-06-13 16:07:12
我正在尝试根据 y 值的不同 inverval 向 y 轴添加注释如果 y > 0,我想给出注释Flexion如果 y < 0,我想给出注释Extension我尝试使用 multicategory 来指定注释我的代码如下所示import plotly.graph_objects as goimport numpy as np x = np.arange(-10,10,1)y = np.arange(-10,10,1)y_annotation = [ 'Flexion' if data > 0 else 'Extension' for data in y ]fig = go.Figure( data= go.Scatter(x=x,y=[y_annotation,y]) )fig.show()这将产生但我不希望线条将Flexision和Extension并且此方法将在 y 轴上给出详细的 y 值,这也是我不想拥有的我想知道是否有另一种方法可以根据不同的间隔向 y 轴添加注释?谢谢 !
查看完整描述

1 回答

?
守着一只汪

TA贡献1872条经验 获得超3个赞

如果除了线条和详细的 y 轴之外,您对上面的设置感到满意,那么您可以放弃多索引方法,只需在适当的位置使用注释fig.add_annotation()

下图是用下面的代码片段生成的:

  1. 使用 , 为左侧的注释留出空间fig.update_layout(margin=dict(l=150))

  2. 将区间名称和数据存储在字典中,并且

  3. 计算每个指定区间的中间值,以及

  4. 将注释放置在 y 轴的左侧,使用xref="paper", 和

  5. 不会弄乱 y 轴刻度线的值。

阴谋

//img1.sycdn.imooc.com//648823de0001050206450295.jpg

完整代码:

import plotly.graph_objects as go

import numpy as np 



x = np.arange(-10,10,1)

y = np.arange(-10,10,1)


y_annotation = [ 'Flexion' if data > 0 else 'Extension' for data in y ]


intervals = {'Flexion':[0,10],

             'Extension':[0, -10]}



# plotly setup

fig = go.Figure( data= go.Scatter(x=x,y=y) )


# make room for annotations

fig.update_layout(margin=dict(l=150))


for k in intervals.keys():

    fig.add_annotation(dict(font=dict(color="green",size=14),

                            #x=x_loc,

                            x=-0.16,

                            y=(intervals[k][0]+intervals[k][1])/2,

                            showarrow=False,

                            text="<i>"+k+"</i>",

                            textangle=0,

                            xref="paper",

                            yref="y"

                           ))



fig.show()


查看完整回答
反对 回复 2023-06-13
  • 1 回答
  • 0 关注
  • 168 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信