【问题标题】:How to create grid of kernel density plots in R如何在 R 中创建核密度图网格
【发布时间】:2019-11-13 20:11:46
【问题描述】:

我想绘制一些高维密度的样本。我喜欢创建它们的网格,在它们交叉时绘制它们的二元密度。例如,在 Bayes and Big Data - The Consensus Monte Carlo Algorithm,Scott 等人。 (2016)有以下情节:

在该图中,对角线上方是大小刚好足以拟合图的分布。在下面的对角线中,双变量密度绘制在一个共同的比例上。

有谁知道我怎样才能实现这样的情节?

例如,如果我刚刚使用以下方法生成了一个 5 维高斯分布:

library(MASS)

data <- MASS::mvrnorm(n=10000, mu=c(1,2,3,4,5), Sigma = diag(5))

【问题讨论】:

    标签: r ggplot2


    【解决方案1】:

    使用 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

    【讨论】:

      猜你喜欢
      • 2019-10-05
      • 2021-07-17
      • 2020-10-29
      • 2017-03-06
      • 2015-09-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多