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

在R语言中如何绘制包含篮球主客场得分及密度的3D图?

R语言篮球主客场得分3D密度可视化实现思路

你需要实现的是主客场得分双变量联合分布的3D密度图,参考效果如下:
3D参考图
具体实现可以按以下步骤走:

  • 数据预处理
    先整理数据集,至少保留主场得分、客场得分两列数值字段,提前过滤掉无效的异常值(比如负得分、超出合理范围的极端值)。
  • 依赖包选型
    二维密度计算用MASS包的kde2d()即可,3D渲染可选两类包:
    • 要交互式可旋转的3D效果选rgl包
    • 要静态出版级固定效果选plot3D包
  • 核心密度计算
    调用kde2d(主场得分列, 客场得分列)做二维核密度估计,输出X(主场得分区间网格)、Y(客场得分区间网格)、Z(对应网格的密度值)三个矩阵,是3D绘图的核心数据源。
  • 3D图绘制
    以rgl包为例,核心代码逻辑如下:
    # 加载包
    library(MASS)
    library(rgl)
    library(RColorBrewer)
    
    # 示例模拟数据,替换成你自己的真实数据
    set.seed(123)
    主场得分 <- rnorm(1000, mean = 95, sd = 10)
    客场得分 <- rnorm(1000, mean = 93, sd = 9)
    bk_data <- data.frame(主场得分, 客场得分)
    
    # 计算二维核密度
    dens <- kde2d(bk_data$主场得分, bk_data$客场得分, n = 50)
    
    # 设置颜色映射
    col_pal <- colorRampPalette(rev(brewer.pal(9, "YlOrRd")))(100)
    z_col <- cut(dens$z, 100, labels = col_pal)
    
    # 绘制3D密度曲面
    persp3d(dens$x, dens$y, dens$z, 
            xlab = "主场得分", ylab = "客场得分", zlab = "密度",
            col = as.character(z_col), alpha = 0.8)
    # 可选:叠加原始得分点在z=0平面
    points3d(bk_data$主场得分, bk_data$客场得分, 0, col = "black", size = 3)
    
  • 效果调整
    • 调整kde2d()的h参数可以修改密度平滑度,带宽越小分布峰越锐利
    • 调整alpha参数可以修改曲面透明度,方便观察底层分布
    • 调用rgl.snapshot()可以导出当前3D图为本地图片文件

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 12:09:02