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

如何用基础Python绘制不同取值范围DataFrame列的非交互并排箱线图

解决方案

完全可以使用matplotlib的子图接口实现你需要的效果,输出纯静态的并排箱线图,每个子图独立适配对应参数的取值范围,布局和你之前用plotly实现的效果完全一致,没有多余交互元素。

实现代码

import matplotlib.pyplot as plt
import numpy as np

# 替换为你自己的待绘制字段列表
plot_cols = ['Current_Market_Cap', 'Last_Price', 'Alpha', "Beta"]
# 创建1行多列的子图布局,sharey=False保证每个子图y轴独立缩放
fig, axes = plt.subplots(
    nrows=1, 
    ncols=len(plot_cols), 
    figsize=(4*len(plot_cols), 5), 
    sharey=False
)

for idx, col in enumerate(plot_cols):
    ax = axes[idx]
    # 绘制箱线主体
    box_data = f_df[col].dropna()
    ax.boxplot(box_data, patch_artist=True, boxprops=dict(facecolor='#4C72B0', alpha=0.7))
    # 叠加带抖动的原始散点,和原plotly代码的boxpoints='all', jitter=.3效果对齐
    x_jitter = np.random.normal(loc=1, scale=0.04, size=len(box_data))
    ax.scatter(x_jitter, box_data, alpha=0.5, s=10, color='#4C72B0')
    # 设置子图标题,隐藏无意义的x轴刻度
    ax.set_title(col, fontsize=10)
    ax.set_xticks([])

# 自动调整子图间距,避免标签重叠
plt.tight_layout()
# 展示图片,也可以调用plt.savefig("boxplot.png", dpi=300)直接保存为本地文件
plt.show()

效果说明

  • 核心配置sharey=False让每个子图的y轴独立适配当前字段的取值范围,彻底解决不同参数量级差异过大导致的展示变形问题
  • 如果不需要展示原始散点,直接删除代码中ax.scatter相关的两行即可,仅保留纯箱线图
  • 可以通过修改figsize参数调整整体画布的宽高,适配不同数量的绘制字段
  • 输出为标准静态图片,可直接插入文档、报告使用,无任何交互控件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 07:18:22