绘制3d密度

时间:2012-11-28 15:47:51

标签: r data-visualization

我想用密度创建一个3d图。

我使用函数密度首先为特定的x值创建二维图,然后函数创建密度并将它们放入y变量。现在我有第二组x值并将其再次放入密度函数中,我得到第二组y变量等等.... 我想将这些集合放入3d图中,我希望你知道我的意思。所以我有一个密度的表面......

E.g。我有:

x1<-c(1:10)
x2<-c(2:11)
y1<-c(1,1,2,1,3,4,2,3,2,2)
y2<-c(1,2,3,1,3,6,2,8,2,2)
.
.
.
.

现在我想在x轴上放置第一个值1第一个集合,在y轴上放置相应的x值,在z轴上放置密度。因此,对于x = 1,我有一个“磁盘”,对于x = 2,我有第二个“磁盘”,依此类推,所以我得到一个密度“山”。

我希望我能理解,如果你有更好的想法去实现它,那么欢迎你! 我想用persp函数来做,如果你用这个函数做一个例子会很好,

非常感谢你的帮助。

2 个答案:

答案 0 :(得分:9)

我担心我无法摆脱你的问题。但是这里是你如何从二维数据集中绘制我认为你正在寻找的那种图,你首先估算出二元密度:

x <- rnorm(1000)
y <- 2 + x*rnorm(1000,1,.1) + rnorm(1000)
library(MASS)
den3d <- kde2d(x, y)
persp(den3d, box=FALSE)

enter image description here

那么persp有很多选项,请查看

?persp

答案 1 :(得分:4)

以彼得的答案为基础。现在,情节可以更有趣,更漂亮,并与plotly库交互。

x <- rnorm(1000)
y <- 2 + x*rnorm(1000,1,.1) + rnorm(1000)
library(MASS)
den3d <- kde2d(x, y)

# the new part:
library(plotly)
plot_ly(x=den3d$x, y=den3d$y, z=den3d$z) %>% add_surface()

给出:

enter image description here