如何在Plotly分面图中仅保留一个Y轴标签?
问题:Plotly分面图仅保留单个Y轴标签
从Plotly官方文档获取的示例代码生成的分面图中,每个子图都显示Y轴标签“lifeExp”,如何设置才能仅保留一个该标签?
原示例代码:
import plotly.express as px df = px.data.gapminder().query("continent == 'Africa'") fig = px.line(df, x="year", y="lifeExp", facet_col="country", facet_col_wrap=7, facet_row_spacing=0.04, # 默认值在使用facet_col_wrap时为0.07 facet_col_spacing=0.04, # 默认值为0.03 height=600, width=800, title="Life Expectancy in Africa") fig.for_each_annotation(lambda a: a.update(text=a.text.split("=")[-1])) fig.update_yaxes(showticklabels=True) fig.show()
解决方案
可以通过先统一隐藏所有子图的Y轴标签,再单独为第一个子图设置Y轴标签的方式实现,修改后的代码如下:
import plotly.express as px df = px.data.gapminder().query("continent == 'Africa'") fig = px.line(df, x="year", y="lifeExp", facet_col="country", facet_col_wrap=7, facet_row_spacing=0.04, facet_col_spacing=0.04, height=600, width=800, title="非洲各国预期寿命变化") fig.for_each_annotation(lambda a: a.update(text=a.text.split("=")[-1])) # 隐藏所有子图的Y轴标签,保留刻度 fig.update_yaxes(title_text='', showticklabels=True) # 单独设置第一个子图的Y轴标签 fig.layout.yaxis.title.text = 'lifeExp' fig.show()
说明
update_yaxes(title_text=''):批量清除所有子图的Y轴标签fig.layout.yaxis.title.text = 'lifeExp':仅给第一个子图的Y轴添加标签- 保留
showticklabels=True可以让所有子图显示Y轴刻度,若不需要可改为False
内容的提问来源于stack exchange,提问作者snow
相关产品推荐
相关产品推荐

