使用px.bar且设置facet_row时,如何仅修改第二个子图的y轴范围?
解决Plotly Express仅修改指定子图y轴范围的问题
要仅修改facet_row布局中第二个子图的y轴范围,你可以通过以下两种有效方法实现:
方法一:使用update_yaxes指定目标子图
当使用facet_row时,子图按行排列,row索引从1开始计数,第二个子图对应row=2,直接通过参数定位修改:
import plotly.express as px df = px.data.tips() fig = px.bar(df, x="sex", y="total_bill", facet_row="day", barmode="group") # 仅修改第二行子图的y轴范围 fig.update_yaxes(range=[0, 10], row=2, col=1) fig.show()
方法二:直接修改对应y轴的布局属性
Plotly为facet_row的每个子图y轴分配了yaxis、yaxis2、yaxis3...的ID,第二个子图对应yaxis2,直接更新其范围:
import plotly.express as px df = px.data.tips() fig = px.bar(df, x="sex", y="total_bill", facet_row="day", barmode="group") # 直接更新第二个子图的y轴范围 fig.layout.yaxis2.update(range=[0, 10]) fig.show()
你之前方法失效的原因分析
- 使用
fig.update_yaxes(range=[0, 60], row=1, col=1)时,row=1定位的是第一个子图,而非第二个,若未正确指定row,设置会默认应用到所有子图。 - 若
fig.layout["yaxis2"].update(range=[0,10])无效,大概率是代码执行顺序问题(比如该语句写在全局update_yaxes之后,被覆盖),或拼写错误(比如误写为yaxis_2)。
内容的提问来源于stack exchange,提问作者Hamzah Al-Qadasi
相关产品推荐
相关产品推荐

