r - R 中 (x,y) 点周围正态分布的 3D 图

标签 r plot 3d normal-distribution rgl

我想将正态分布的单变量正态密度函数绘制到 (x,y,z) 坐标系上。 我使用的代码是:

library(rgl)
open3d()

x <- seq(0, 10, length=100)
y <- seq(0, 10, length=100)


z = outer(x,y, function(x,y) dnorm(x,2.5,1)*dnorm(y,2.5,1))

persp3d(x, y, z,col = rainbow(100))

enter image description here

我遇到的问题是我希望正态分布不仅在其均值附近,而且在直线或圆上。在后一种情况下,我希望输出类似于火山。我想我必须首先在循环中创建一些概率。我怎样才能做到这一点?或者我还应该使用一些表面命令来绘制输出?我很确定这与二元正态分布无关。

最佳 富士

最佳答案

第一部分很简单:只是不要让您的 z 依赖于 y 例如:

z = outer(x,y, function(x,y) dnorm(x,2.5,1))
persp3d(x, y, z,col = rainbow(100))

对于第二部分,您可以想象正态分布的均值位于 x^2+y^2=1 圆上。您将拥有径向的无限正态分布。试试这个:

#define the volcano function
volcano<-function(x,y,sigma=1/2) {
  alpha<-atan(y/x)+pi*(x<0)
  d<-sqrt((cos(alpha)-x)^2 + (sin(alpha)-y)^2)
  dnorm(d,0,sigma)
}
x<-seq(-2,2,length.out=100)
y<-seq(-2,2,length.out=100)
z<-outer(x,y,volcano)
persp3d(x, y, z,col = rainbow(100))

关于r - R 中 (x,y) 点周围正态分布的 3D 图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36125313/

相关文章:

plot - 使用 racket plot/no-gui 进行图像质量控制

r - 使用 ggmaps 创建黑白 map

c++ - 删除 3D 数组导致段错误

c# - 如何将程序生成的广告牌添加到 helix 3D

r - 如何为ggplot强制geom_smooth渲染?

替换两个给定时间之间的列中的值

R裁剪栅格数据和设置轴限制

R 错误 : parameters without starting value

r - 给出平均时间图 (seqmtplot) 的准确值

math - 展开 3d 凸多边形