Plotly Python柱状图切换stack/group按钮无响应问题修复
Plotly柱状图切换按钮失效修复方案
你的代码中点击按钮后柱状图的分组/堆叠样式不更新,问题出在按钮的方法调用和参数格式不匹配,同时参数值大小写不符合Plotly要求。以下是修复后的完整代码:
import plotly.graph_objects as go import pandas as pd # 构造示例数据(对应你提供的DataFrame) data = { 'Sales': [674.3, 634.32, 338.17, 1209.9], 'Expenses': [529.47, 498.08, 265.54, 949.99], 'Operating Profit': [144.83, 136.24, 72.63, 259.86], 'Net Profit': [48.81, 45.91, 24.48, 87.57] } temp_df = pd.DataFrame(data, index=['q1', 'q2', 'q3', 'q4']) fig1 = go.Figure() x = temp_df.index y1 = temp_df['Sales'].astype(float) # Sales Column y2 = temp_df['Expenses'].astype(float) # Expenses Column y3 = temp_df['Operating Profit'].astype(float) # Operating Profit Column y4 = temp_df['Net Profit'].astype(float) # Net Profit Column fig1.add_trace(go.Bar(x=x, y=y1, name='Sales', marker_color ="#4287f5")) fig1.add_trace(go.Bar(x=x, y=y2, name='Expenses', marker_color ="#f06969")) fig1.add_trace(go.Bar(x=x, y=y3, name='Operating Profit', marker_color ="#469984")) fig1.add_trace(go.Bar(x=x, y=y4, name='Net Profit', marker_color ="#53c24f")) fig1.update_layout( title='<b>QoQ Performance</b>', xaxis_title='Quarter', yaxis_title='Rupees in Cr.') updatemenus=[ dict( type = "buttons", buttons=list([ dict( args=[{'barmode': 'group'}], label="Group", method="relayout", ), dict( args=[{'barmode': 'stack'}], label="Stack", method="relayout" ) ]) ), ] fig1.update_layout(updatemenus=updatemenus) fig1.show()
关键修改说明:
- 方法替换:将按钮的
method从"update"改为"relayout",因为我们只需要修改图表布局中的barmode属性,relayout是专门用于更新布局的方法,更高效且匹配需求。 - 参数修正:
- 将
args改为字典格式[{'barmode': 'group'}],符合relayout方法的参数要求。 - 将参数值
'Group'改为小写的'group',Plotly的barmode合法取值为小写的group和stack,大写会被识别为无效值。
- 将
- 顺便修正了原代码中注释的错误(把Operating Profit和Net Profit的注释误写为Expenses)。
内容的提问来源于stack exchange,提问作者RSW
相关产品推荐
相关产品推荐

