Plotly Express使用facet分面绘图异常,如何实现按cat_2生成多子图效果?
问题修复方案
你代码的核心问题是range_x参数传入的边界值类型和x轴字段类型不匹配:
- x轴指定的
numerical_col是数值类型,但你给range_x传了字符串格式的["10000","500000"],会导致Plotly错误将x轴识别为分类轴,打乱分面的维度计算逻辑,最终导致分面功能失效。
修复后完整代码
import plotly.graph_objects as go import plotly.express as px # 仅修改range_x为数值类型,去掉数值两侧的引号 fig = px.histogram(df, nbins = 5, x = "numerical_col", color = "cat_1", animation_frame="date", range_x=[10000, 500000], facet_col="cat_2") # 可选配置:如果需要各分面子图的x轴范围独立不联动,可取消下方注释 # fig.update_xaxes(matches=None) fig.update_layout( margin=dict(l=25, r=25, t=20, b=20)) fig.show()
额外校验项
如果修改后仍未生效,请确认两点:
- 数据集
df中的cat_2字段是分类类型,且存在至少2个不同的取值,若所有行的cat_2值一致,会默认仅生成一个子图 - 若分面数量较多,可添加
facet_col_wrap参数指定每行最多展示的分面数量,避免子图宽度被压缩到异常
内容的提问来源于stack exchange,提问作者Maxima
相关产品推荐
相关产品推荐

