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

如何绘制类似维基百科的3D(或4D?)Dirichlet概率密度函数图?

绘制Dirichlet概率密度函数的可视化方案

我明白你想复刻维基百科上那种Dirichlet概率密度函数的可视化图,手里已经有10万行由rdirichlet生成的三元样本(每行元素和为1),还能用DirichletReg画出类似维基百科右下角的热图对吧?先把你那部分代码补全并整理好,再给你说说怎么实现3D版本的可视化~

一、完善你的Dirichlet热图代码

你给出的代码有点不完整,我帮你补全成可直接运行的版本,这样就能生成对应维基百科右下角的三角热图:

library(gtools)
library(DirichletReg)

# 生成10万行Dirichlet样本,alpha参数设置为c(10,1,10)
dat <- rdirichlet(100000, alpha = c(10,1,10))

# 转换为DirichletReg要求的数据格式并绘制热图
plot(DR_data(dat), 
     a2d = list(col = heat.colors(100)),  # 用渐变色区分密度高低
     main = "Dirichlet分布热图 (α=(10,1,10))")

这个热图是把三元样本投影到二维单纯形(三角平面)上,用颜色深浅表示区域的样本密度,和维基百科里的右下角图逻辑完全一致。

二、绘制3D版Dirichlet概率密度图

如果想要更直观的3D效果(把密度作为高度,在单纯形平面上呈现山峰状),可以用rgl包实现交互式3D可视化,步骤如下:

1. 安装并加载所需工具包

install.packages(c("gtools", "rgl", "ks"))  # ks包用于核密度估计
library(gtools)
library(rgl)
library(ks)

2. 生成样本并做核密度估计

因为我们是通过样本估计真实密度,所以用核密度方法来计算每个位置的密度值:

# 生成目标Dirichlet样本
dat <- rdirichlet(100000, alpha = c(10,1,10))

# 对单纯形上的样本做核密度估计,指定空间类型为单纯形
dens <- kde(x = dat, H = Hscv(dat), binned = TRUE, 
            domain = list(type = "simplex"))

3. 绘制交互式3D曲面图

先把单纯形坐标转换为笛卡尔坐标,再用rgl绘制3D曲面:

# 定义单纯形坐标转笛卡尔坐标的函数,适配rgl的3D绘图
simplex_to_cart <- function(p) {
  x <- p[,1] + p[,2]/2
  y <- (sqrt(3)/2)*p[,2]
  cbind(x, y)
}

# 转换密度估计网格点的坐标
cart_coords <- simplex_to_cart(dens$eval.points)

# 开启rgl窗口绘制3D图
open3d()
surface3d(cart_coords[,1], cart_coords[,2], dens$estimate,
          col = heat.colors(100)[cut(dens$estimate, 100)],
          xlab = "X1", ylab = "X2", zlab = "Density",
          main = "3D Dirichlet密度图 (α=(10,1,10))")
# 添加颜色图例辅助理解
legend3d("topright", legend = c("低密度", "高密度"),
         fill = heat.colors(2), cex = 0.8)

这个3D图会在三角平面基础上,用高度表示概率密度的大小,和维基百科里的3D示例图效果类似,而且支持交互旋转查看细节。

三、补充说明

  • 对于三元Dirichlet分布,因为三个变量满足X1+X2+X3=1,所以本质是二维单纯形上的分布,所谓的“3D图”是把密度作为第三个维度呈现曲面效果;如果是四元Dirichlet分布才涉及4D概念,你这里用2D单纯形+密度高度的3D可视化就足够啦。
  • 如果需要静态3D图,也可以用plot3D包的persp3D函数实现,代码逻辑和上面一致,只是绘图函数替换即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 10:17:49