如何使用下拉菜单更新绘图标题?

How to update plotly graph title using dropdown?

我希望绘图标题根据下拉列表中的选定值动态更改。 下面的代码可以很好地更新图表本身,但不会更改标题。

我也试过 {'layout_title_text': 'Title 1'} 而不是 {'layout':{'title': {'text': 'Title 1'}}},但也没用。

pio.renderers.default = 'notebook'
    
import plotly.graph_objects as go
from plotly.subplots import make_subplots

p = go.Figure()

y_values = ['label1', 'label2', 'label3']

x_values1 = [1,5,3]
x_values2 = [4,3,5]

p = p.add_trace(go.Bar(x = x_values1, y = y_values,
                   orientation='h' 
               ))

updatemenus = [{'buttons': [{'method': 'update',
                             'label': 'Values 1',
                             'args': [{'x': [x_values1]},
                                     {'layout':{'title': {'text': 'Title 1'}}}
                                       ]
                                      },
                            {'method': 'update',
                             'label': 'Values 2',
                             'args': [{'x': [x_values2]},
                                       {'layout':{'title': {'text': 'Title 2'}}}
                                     ]
                            }                         
                           ],
                'direction': 'down',
                'showactive': True}]

p = p.update_layout(template = 'plotly_white', 
                    updatemenus=updatemenus
                   )

p.show()

只需将 'layout'={} 放入您的设置中:

'args': [{'x': [x_values1]},
     {'title': {'text': 'Title 1'}}
       ]
      },

结果:

对于第二个选项:

完整代码:

import plotly.graph_objects as go
from plotly.subplots import make_subplots

p = go.Figure()

y_values = ['label1', 'label2', 'label3']

x_values1 = [1,5,3]
x_values2 = [4,3,5]

p = p.add_trace(go.Bar(x = x_values1, y = y_values,
                   orientation='h' 
               ))

updatemenus = [{'buttons': [{'method': 'update',
                             'label': 'Values 1',
                             'args': [{'x': [x_values1]},
                                     {'title': {'text': 'Title 1'}}
                                       ]
                                      },
                            {'method': 'update',
                             'label': 'Values 2',
                             'args': [{'x': [x_values2]},
                                       {'title': {'text': 'Title 2'}}
                                     ]
                            }                         
                           ],
                'direction': 'down',
                'showactive': True}]

p = p.update_layout(template = 'plotly_white', 
                    updatemenus=updatemenus
                   )

p.update_layout(title_text = 'Title 1')
p.show()