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

如何对多个变量(7个)分箱制作散点图?

多变量分箱可视化方案(适配糖尿病数据集)

针对你需要探索多变量间关系并实现多变量分箱的需求,这里提供基于ggplot2的扩展方案,完美适配你的糖尿病数据集:

1. 核心思路

参考方法是对单个自变量分箱后计算因变量均值,扩展到多变量时,我们可以通过数据长格式转换+批量子图生成,快速得到所有变量与目标变量的分箱关系图;如果需要探索变量间两两分箱关系,可以借助GGally包扩展矩阵散点图。

2. 代码实现与解释

第一步:加载数据与依赖包

diabetes <- read.csv('https://github.com/bandcar/Examples/raw/main/diabetes.csv')
library(ggplot2)
library(tidyr)  # 用于数据格式转换

第二步:单变量与目标变量的分箱可视化

假设数据集最后一列Y是你关注的目标变量,我们将所有自变量转换为长格式,批量生成分箱散点图:

# 转换为长格式,方便批量处理多自变量
diabetes_long <- diabetes %>%
  pivot_longer(cols = -Y, names_to = "自变量", values_to = "取值")

# 绘制多变量分箱散点图矩阵
ggplot(diabetes_long, aes(x = 取值, y = Y)) +
  geom_point(alpha = 0.3, color = "gray") +  # 原始散点,降低透明度避免重叠
  stat_summary_bin(fun = mean, bins = 20,  # 对自变量分箱,计算Y的均值
                   color = "orange", size = 2, geom = "point") +
  facet_wrap(~自变量, scales = "free_x") +  # 每个自变量单独生成子图
  labs(x = "变量取值", y = "目标变量Y") +
  theme_bw()
  • pivot_longer:把宽格式的数据集转成长格式,让所有自变量共享一套绘图逻辑。
  • stat_summary_bin:和你提供的参考方法逻辑一致,自定义分箱数量(这里设为20),用橙色点突出每个分箱的Y均值。
  • scales = "free_x":让每个子图的x轴根据变量自身范围自适应,避免尺度差异导致的显示失真。

第三步:变量间两两分箱关系探索

如果需要查看所有变量两两之间的分箱关系,可以用GGally包扩展经典的pairs图:

library(GGally)

ggpairs(diabetes, 
        lower = list(continuous = function(data, mapping, ...) {
          ggplot(data = data, mapping = mapping) +
            geom_point(alpha = 0.3, color = "gray") +
            stat_summary_bin(fun = mean, bins = 15, color = "orange", size = 1.5)
        }))

这段代码会生成变量两两组合的矩阵图,每个散点图都加入了分箱均值点,帮你快速识别变量间的潜在趋势。

3. 调整技巧

  • 分箱数量:bins参数可根据数据量调整,数据量小的话建议减少到10-15,避免单个分箱数据不足导致均值无意义。
  • 分类变量处理:如果数据包含分类变量,替换stat_summary_bin为stat_summary(fun = mean)即可直接计算组均值,无需分箱。
  • 视觉优化:调整alpha透明度、点的颜色和大小,让分箱均值点更突出,同时保留原始数据的分布信息。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 11:45:28