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

使用自定义绘图标题时,“plotly.subplots”中的注释会中断

使用自定义绘图标题时,“plotly.subplots”中的注释会中断

慕哥9229398 2023-06-20 16:05:04
我有一个奇怪的问题 - 不确定这是一个错误还是我遗漏了什么。当绘制子图并Code 1为每个子图分配自定义标题时 - 我稍后尝试添加到底部图的注释没有完全显示,但只显示最后两个 ( Output Plot 1)。代码 1:import numpy as npfrom plotly.subplots import make_subplotsfrom math import expfig = make_subplots(2, 1, subplot_titles=['Activation', 'Prediction errors - Model, ALO and RND'])x = np.linspace(0, 10, 100)y = np.array(list(map(lambda x: 1 / (1 + exp(-0.1 * x + 5)), x)))fig.add_trace(    go.Scatter(        x=x,        y=y,        name=f'\N{Greek Small Letter Sigma}(x)',        showlegend=True    ),    row=1,    col=1)fig['layout']['xaxis'].update(title_text='x')for i in range(4):    x = np.where(np.random.randint(0, 2, 100)==1)[0]    fig.add_trace(        go.Scatter(            x=x,            y=np.zeros_like(x) + i,            name=f'Plot {i}',            mode='markers',             marker=dict(                    symbol='circle-open',                    color='green',                    size=5                ),            showlegend=True        ),        row=2,        col=1    )fig['layout']['xaxis2'].update(title_text='active users', range=[0, 10], autorange=True)fig['layout']['yaxis2'].update(title_text='active users', visible=False, autorange=True)fig['layout'].update(    annotations=[    dict(x=0, y=0.125, xref='x2', yref='y2', text='True activity', font=dict(size=10, color='green')),    dict(x=0, y=1.125, xref='x2', yref='y2', text='Model', font=dict(size=10, color='blue')),    dict(x=0, y=2.125, xref='x2', yref='y2', text='ALO', font=dict(size=10, color='red')),    dict(x=0, y=3.125, xref='x2', yref='y2', text='RND', font=dict(size=10, color='black')),    ])fig.show()输出图 1另一方面,如果我删除自定义绘图标签 - 一切都按预期工作,如Code 2和输出所示Image 2。
查看完整描述

1 回答

?
蝴蝶不菲

TA贡献1810条经验 获得超4个赞

我不确定这是否是由于字幕设置引起的,但是add_annotation()是正确的,update(annotations=[]可能已被函数覆盖以更新已设置的注释。


import plotly.graph_objects as go

import numpy as np

from plotly.subplots import make_subplots

from math import exp


fig = make_subplots(2, 1, subplot_titles=('Activation', 'Prediction errors - Model, ALO and RND'))


x = np.linspace(0, 10, 100)

y = np.array(list(map(lambda x: 1 / (1 + exp(-0.1 * x + 5)), x)))

fig.add_trace(

    go.Scatter(

        x=x,

        y=y,

        name=f'\N{Greek Small Letter Sigma}(x)',

        showlegend=True

    ),

    row=1,

    col=1

)

fig['layout']['xaxis'].update(title_text='x')


for i in range(4):

    x = np.where(np.random.randint(0, 2, 100)==1)[0]

    fig.add_trace(

        go.Scatter(

            x=x,

            y=np.zeros_like(x) + i,

            name=f'Plot {i}',

            mode='markers', 

            marker=dict(

                    symbol='circle-open',

                    color='green',

                    size=5

                ),

            showlegend=True

        ),

        row=2,

        col=1

    )

fig['layout']['xaxis2'].update(title_text='active users', autorange=True)

fig['layout']['yaxis2'].update(title_text='active users', visible=True, range=[-1,4])


fig.add_annotation(

    dict(x=0, y=3.125, xref='x2', yref='y2', text='RND', showarrow=True, font=dict(size=10, color='black'))

)

fig.add_annotation(

    dict(x=0, y=2.125, xref='x2', yref='y2', text='ALO', showarrow=True, font=dict(size=10, color='red'))

)

fig.add_annotation(

    dict(x=0, y=1.125, xref='x2', yref='y2', text='Model', showarrow=True, font=dict(size=10, color='Blue'))

)

fig.add_annotation(

    dict(x=0, y=0.125, xref='x2', yref='y2', text='True activity', showarrow=True, font=dict(size=10, color='green'))

)


fig.show()

//img1.sycdn.imooc.com//64915df80001610206270332.jpg

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

添加回答

举报

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