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

如何在散点图中对x轴分组实现对应y轴数值的聚类效果?

实现方案与推荐图表类型

散点图实现聚类效果的方法

你可以通过分箱+抖动处理的方式实现需求,步骤如下:

  • 先对x值做分箱处理:按照你设定的0、4、8刻度,划分出[0,4)、[4,8)两个区间,给每个区间分配一个统一的x轴中心值(比如两个区间的中心分别设为2、6),让同一区间的所有点x坐标先对齐到中心位置
  • 给对齐后的x坐标添加小范围随机扰动(jitter):扰动范围控制在±0.2~0.5之间,避免同一区间内y值相同的点完全重叠,自然形成簇状聚集效果
  • 最后显式设置x轴刻度为[0,4,8],隐藏中间的次要刻度即可

你提供的原始数据散点图如下:
散点图示例

以下是Python实现的参考代码:

import matplotlib.pyplot as plt
import numpy as np

# 原始数据
x = np.array([1,2,3,4,5,6,7])
y = np.array([1,2,2,2,3,4,5])

# 分箱配置
bin_edges = [0,4,8]
bin_centers = [2, 6]
# 给每个x值分配对应箱的中心坐标
x_binned = np.array([bin_centers[0] if xi < 4 else bin_centers[1] for xi in x])
# 添加随机扰动避免重叠
x_jitter = x_binned + np.random.uniform(-0.3, 0.3, size=len(x))

# 绘图设置
plt.scatter(x_jitter, y)
plt.xticks(bin_edges)
plt.show()

更适合的替代图表类型

相比手动调整的散点图,以下图表更适配你的需求:

  • 蜂群图(Swarm Plot):自带分箱、避免点重叠的逻辑,不需要手动加扰动,同一区间的点会自动排列成簇,点的分布密度直接对应y值的出现频率,完全匹配你要的聚类效果
  • 箱线图(Box Plot):每个x区间对应一个箱形,可直接展示该区间内y值的中位数、四分位范围、极值和异常值,适合快速对比不同区间的y值整体分布
  • 小提琴图(Violin Plot):在箱线图的基础上叠加了y值的核密度分布,能更直观展示哪个y值的出现频次更高,同时保留了统计量信息

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 22:24:06