Plotly使用facet_col生成分面子图时如何自定义修改子图标题
Plotly分面子图自定义标题修复方案
错误原因
- 字典键值不匹配:Plotly内置
tips数据集的sex字段实际取值为Female、Male,你定义的names字典键写为Femmine/Maschi,无法和分面生成的默认标题匹配。 - 注解遍历逻辑错误:
for_each_annotation会逐个传入每个子图的标题注解对象,你的写法没有匹配当前注解对应的原始分面类别,直接将字典全部键的字符串赋值给所有注解,导致两个子图都显示全部键名。
正确实现代码
import plotly.express as px df = px.data.tips() # 修正字典键,和数据集sex字段的实际取值对应,值为自定义的子图标题 names = {'Female':'Plot1', 'Male':'Plot2'} fig = px.box(df, x='day', y='tip', facet_col='sex') # 遍历所有子图标题注解,提取原始分面值后映射为自定义标题 fig.for_each_annotation(lambda a: a.update(text=names[a.text.split('=')[-1]])) fig.show()
逻辑说明
默认生成的分面标题格式为分面字段名=分面值,比如sex=Female,通过a.text.split('=')[-1]可以提取出末尾的实际分面值(Female/Male),再用这个值去names字典中取对应的自定义标题即可完成替换。
内容的提问来源于stack exchange,提问作者Polar
相关产品推荐
相关产品推荐

