首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何为双变量数据生成3D联合概率分布(例如,绘图)?

如何为双变量数据生成3D联合概率分布(例如,绘图)?
EN

Stack Overflow用户
提问于 2019-08-22 13:33:55
回答 2查看 633关注 0票数 1

我已经生成了这些数据:

代码语言:javascript
复制
dat = MASS::mvrnorm(n = 50, 
                mu = c(1, 5),
                Sigma = matrix(c(1, 0.5, 0.5, 1), nrow = 2),
                empirical = TRUE)

我可以用以下代码生成2D直方图:

代码语言:javascript
复制
plot_ly(x = dat[,1], y = dat[,2], type = "histogram2dcontour")

我如何在3D中生成这些相同数据的绘图-无论是3D直方图还是3D内核密度分布?

EN

回答 2

Stack Overflow用户

发布于 2019-08-22 14:13:22

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

代码语言:javascript
复制
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")

另一种选择是:

代码语言:javascript
复制
# 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")

或者作为2d热图:

代码语言:javascript
复制
##  Plot as a 2D heatmap:
image2D(z=z, border="black")

票数 3
EN

Stack Overflow用户

发布于 2021-01-04 19:55:36

从MASS和plotly使用kde2d

代码语言:javascript
复制
dens2d <- kde2d(dat[,1],dat[,2])

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

fig <- fig %>% add_surface()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57602608

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档