我想绘制一些高尺寸密度的样本。我喜欢创建它们的网格,在它们交叉时绘制其双变量密度。例如,在《贝叶斯与大数据-共识蒙特卡洛算法》中,Scott等人。 (2016)具有以下情节:
在此图中,对角线上方是正好足以适合图的比例尺上的分布。在下面的对角线中,以共同比例绘制双变量密度。
有人知道我如何实现这样的情节吗?
例如,如果我刚刚使用以下命令生成了5维高斯分布:
library(MASS)
data <- MASS::mvrnorm(n=10000, mu=c(1,2,3,4,5), Sigma = diag(5))
答案 0 :(得分:3)
使用ggforce软件包中的facet_matrix()
相对容易。您只需要指定在图的哪一部分上的哪一层(即layer.upper = 1
表示第一层(geom_density2d()
)应该位于矩阵的上三角部分。geom_autodensity()
确保KDE接触到图的底部。
library(MASS)
library(ggforce)
data <- MASS::mvrnorm(n=10000, mu=c(1,2,3,4,5), Sigma = diag(5))
df <- as.data.frame(data)
ggplot(df) +
geom_density2d(aes(x = .panel_x, y = .panel_y)) +
geom_autodensity() +
geom_point(aes(x = .panel_x, y = .panel_y)) +
facet_matrix(vars(V1:V5), layer.upper = 1, layer.diag = 2)
关于facet_matrix()
的更多详细信息发布在here。