You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Plotly Express中实现多面直方图的独立分桶

在Plotly Express中绘制不同尺度多列数据的独立分桶直方图

你当前的代码通过melt规整数据并使用facet_col分面展示,同时取消了坐标轴的强制匹配,但Plotly Express的分面直方图默认会采用全局统一的分桶区间,这就导致不同尺度的子图分桶无法适配各自的数据范围——比如你当前输出里,右侧total_bill_times_100的直方图分桶过粗,完全看不清数据分布细节,而左侧total_bill的分桶相对合理。

要实现每个子图的分桶完全独立,需要手动创建子图并分别绘制各变量的直方图,具体代码如下:

import plotly.express as px
import plotly.subplots as sp
import plotly.graph_objects as go

# 准备数据
df = px.data.tips()
df['total_bill_times_100'] = df['total_bill'] * 100
cols_to_plot = ['total_bill', 'total_bill_times_100']

# 创建1行多列的子图布局
fig = sp.make_subplots(rows=1, cols=len(cols_to_plot), subplot_titles=cols_to_plot)

# 为每个变量单独绘制直方图,确保分桶独立计算
for idx, col in enumerate(cols_to_plot, 1):
    # 用Plotly Express单独生成当前列的直方图数据,自动计算适配的分桶
    single_hist = px.histogram(df, x=col)
    fig.add_trace(single_hist.data[0], row=1, col=idx)

# 统一设置布局样式
fig.update_layout(template='simple_white', showlegend=False)
fig.update_xaxes(title_text='数值')
fig.update_yaxes(title_text='频数')
fig.show()

核心改进点

  • 每个子图的分桶是基于单独变量的数据分布自动计算的,完全独立于其他子图
  • 保留了分面展示的布局结构,同时解决了不同尺度数据的分桶适配问题

内容的提问来源于stack exchange,提问作者Leo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 15:15:34