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

Plotly:如何为已生成的散点图添加四分位距(IQR)区域

Plotly散点图添加四分位距(IQR)实现方案

核心实现逻辑

先计算对应维度的四分位数值,再通过矩形图层绘制IQR区域,叠加中位数参考线,通过图层层级参数避免遮挡散点数据。

完整可运行示例代码

import plotly.express as px
import numpy as np
import pandas as pd

# 生成测试数据,可替换为自有数据集
df = pd.DataFrame({
    'x': np.random.normal(loc=50, scale=10, size=200),
    'y': np.random.normal(loc=30, scale=8, size=200)
})

# 计算x轴相关统计值
q1_x = np.quantile(df['x'], 0.25)
q3_x = np.quantile(df['x'], 0.75)
median_x = np.quantile(df['x'], 0.5)

# 计算y轴相关统计值
q1_y = np.quantile(df['y'], 0.25)
q3_y = np.quantile(df['y'], 0.75)
median_y = np.quantile(df['y'], 0.5)

# 初始化散点图
fig = px.scatter(df, x='x', y='y', title='带IQR区域与中位数参考线的散点图')

# 添加x轴IQR矩形区域
fig.add_vrect(
    x0=q1_x, x1=q3_x,
    fillcolor="lightblue", opacity=0.2,
    layer="below", line_width=0,
    name="X轴IQR"
)

# 添加y轴IQR矩形区域
fig.add_hrect(
    y0=q1_y, y1=q3_y,
    fillcolor="lightgreen", opacity=0.2,
    layer="below", line_width=0,
    name="Y轴IQR"
)

# 添加中位数参考线
fig.add_vline(x=median_x, line_width=2, line_dash="dash", line_color="blue", name="X中位数")
fig.add_hline(y=median_y, line_width=2, line_dash="dash", line_color="green", name="Y中位数")

# 输出图表
fig.show()

关键参数说明

  • layer="below":将IQR矩形置于散点图层下方,避免遮挡原始数据
  • opacity=0.2:设置合理透明度,兼顾区域辨识度与数据可见性
  • line_width=0:去掉矩形默认边框,避免多余线条干扰图表展示
  • line_dash="dash":将中位数参考线设置为虚线,和IQR区域形成视觉区分

分组散点图适配方案

如果是带分组维度的散点图,按分组循环计算对应统计值后逐一添加元素即可:

# 按category字段分组示例
group_colors = px.colors.qualitative.Plotly
for idx, group in enumerate(df['category'].unique()):
    group_df = df[df['category'] == group]
    # 计算当前分组的统计值
    q1_x = np.quantile(group_df['x'], 0.25)
    q3_x = np.quantile(group_df['x'], 0.75)
    median_x = np.quantile(group_df['x'], 0.5)
    # 添加对应区域与参考线,不同分组用不同颜色区分
    fig.add_vrect(x0=q1_x, x1=q3_x, fillcolor=group_colors[idx], opacity=0.15, layer="below", line_width=0)
    fig.add_vline(x=median_x, line_width=2, line_dash="dash", line_color=group_colors[idx])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.18 14:54:02