1

我已经生成了这些数据:

dat = MASS::mvrnorm(n = 50, 
                mu = c(1, 5),
                Sigma = matrix(c(1, 0.5, 0.5, 1), nrow = 2),
                empirical = TRUE)

我可以使用以下代码生成二维直方图:

plot_ly(x = dat[,1], y = dat[,2], type = "histogram2dcontour")

在此处输入图像描述

如何在 3D 中生成这些相同数据的图 - 作为 3D 直方图或 3D 核密度分布?

4

2 回答 2

3

你试过bivariate吗?首先,假设您有两列 -xy

library(bivariate)
colnames(dat) <- c("x", "y")
dat <- as.data.frame(dat)
f = kbvpdf (dat$x, dat$y, 0.7, 7)
plot (f, TRUE, xlab="x", ylab="y")

在此处输入图像描述

另一种选择是:

# install.packages("plot3D")
library(plot3D)
##  Calculate joint counts at cut levels:
z <- table(dat$x, dat$y)

##  Plot as a 3D histogram:
hist3D(z=z, border="black")

在此处输入图像描述

或作为二维热图:

##  Plot as a 2D heatmap:
image2D(z=z, border="black")

在此处输入图像描述

于 2019-08-22T06:13:22.297 回答
0

使用 MASS 中的 kde2d 和 plotly

dens2d <- kde2d(dat[,1],dat[,2])

fig <- plot_ly(x=dat[,1], y=dat[,2], z=dens2d$z) 

fig <- fig %>% add_surface()
于 2021-01-04T11:55:35.630 回答