R中的狄利克雷分布图

机器算法验证 r ggplot2 狄利克雷分布
2022-04-03 02:34:09

我想在 R 中绘制个 Dirichlet 分布的随机,维度15α=1n=10

require(MCMCpack)
alpha <- 1
draws <- 15
dimen <- 10
x <- rdirichlet(draws, rep(alpha, dimen))

我想要一个类似于下图的输出。这张图片来自 David Blei 教授在 KDD 2011 上的主题建模教程。我认为它是使用 ggplot2 完成的,但我不知道如何生成它。任何帮助将不胜感激。

在此处输入图像描述

1个回答

首先,您需要将数据转换为合理的形式ggplot2

dat <- data.frame(item=factor(rep(1:10,15)), 
                  draw=factor(rep(1:15,each=10)), 
                  value=as.vector(t(x)))

然后,您可以通过构建您可以在图中看到的组件(点和线范围;分面、轴控制和分面边界)来绘制它:

library(ggplot2)
ggplot(dat,aes(x=item,y=value,ymin=0,ymax=value)) + 
               geom_point(colour=I("blue"))       + 
               geom_linerange(colour=I("blue"))   + 
               facet_wrap(~draw,ncol=5)           + 
               scale_y_continuous(lim=c(0,1))     +
               theme(panel.border = element_rect(fill=0, colour="black"))

输出: 狄利克雷绘图的情节