我想在 R 中绘制个 Dirichlet 分布的随机,维度。
require(MCMCpack)
alpha <- 1
draws <- 15
dimen <- 10
x <- rdirichlet(draws, rep(alpha, dimen))
我想要一个类似于下图的输出。这张图片来自 David Blei 教授在 KDD 2011 上的主题建模教程。我认为它是使用 ggplot2 完成的,但我不知道如何生成它。任何帮助将不胜感激。
我想在 R 中绘制个 Dirichlet 分布的随机,维度。
require(MCMCpack)
alpha <- 1
draws <- 15
dimen <- 10
x <- rdirichlet(draws, rep(alpha, dimen))
我想要一个类似于下图的输出。这张图片来自 David Blei 教授在 KDD 2011 上的主题建模教程。我认为它是使用 ggplot2 完成的,但我不知道如何生成它。任何帮助将不胜感激。
首先,您需要将数据转换为合理的形式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"))