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

如何基于Q1/Q2/Q3、最值等信息手动绘制差分隐私箱线图

手动绘制基于统计量的差分隐私箱线图

核心思路

你猜的没错,确实需要借助matplotlib的基础绘图函数手动构建箱线图的各个组件——完全基于你提供的统计量(Q1、Q2、Q3、最小值、最大值、均值)实现,不需要任何原始数据。

具体实现步骤与代码

1. 导入依赖库

import matplotlib.pyplot as plt
from matplotlib.patches import Rectangle

2. 定义统计量(替换为你的实际数据)

# 差分隐私统计量示例,替换成你的真实值
q1 = 20
q2 = 30  # 中位数
q3 = 40
min_val = 10
max_val = 60
mean_val = 32

# 计算IQR和须线上下限
iqr = q3 - q1
whisker_low = q1 - 1.5 * iqr
whisker_high = q3 + 1.5 * iqr

3. 手动绘制箱线图组件

# 创建画布与坐标轴
fig, ax = plt.subplots(figsize=(6, 8))

# 设定箱线图在x轴的位置(单个图设为1,多个图可设为1、2、3...)
x_pos = 1
# 箱体宽度
box_width = 0.4

# 绘制箱体(Q1到Q3的矩形区域)
box = Rectangle((x_pos - box_width/2, q1), box_width, iqr, 
                facecolor='lightblue', edgecolor='black')
ax.add_patch(box)

# 绘制中位数线(横穿箱体的粗线)
ax.plot([x_pos - box_width/2, x_pos + box_width/2], [q2, q2], 
        color='black', linewidth=2)

# 绘制下须线与盖帽
ax.plot([x_pos, x_pos], [q1, whisker_low], color='black')
ax.plot([x_pos - box_width/3, x_pos + box_width/3], [whisker_low, whisker_low], 
        color='black')

# 绘制上须线与盖帽
ax.plot([x_pos, x_pos], [q3, whisker_high], color='black')
ax.plot([x_pos - box_width/3, x_pos + box_width/3], [whisker_high, whisker_high], 
        color='black')

# 绘制真实最小值、最大值(红色圆点标记)
ax.scatter(x_pos, min_val, color='red', marker='o', s=80, zorder=5)
ax.scatter(x_pos, max_val, color='red', marker='o', s=80, zorder=5)

# 绘制均值(绿色菱形标记,区分中位数)
ax.scatter(x_pos, mean_val, color='green', marker='D', s=80, zorder=5)

# 调整坐标轴样式
ax.set_xticks([x_pos])
ax.set_xticklabels(['差分隐私分布'])
ax.set_ylabel('数值')
ax.set_title('基于统计量的箱线图')
ax.grid(axis='y', linestyle='--', alpha=0.7)

plt.show()

关键细节说明

  • 箱体用Rectangle绘制,参数对应左下角坐标、宽度、高度(高度即IQR)
  • 中位数线用加粗横线突出,和箱体形成视觉区分
  • 须线盖帽宽度设为箱体的1/3,保证视觉协调
  • 真实最小/最大值用红色圆点置于最上层(zorder=5),避免被其他元素遮挡
  • 均值用绿色菱形标记,和中位数做明确区分
  • 若要绘制多个箱线图,只需将x_pos设为不同数值(如1、2、3),重复上述绘图步骤即可

内容的提问来源于stack exchange,提问作者Bex T.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 14:37:36