для каждой третьей итерации вам нужно
if ($i % 3 === 0)
, если какая-то третья итерация, затем
if ($i === 3)
ggplot2 требуется data.frame в качестве исходных данных. Поэтому вам необходимо:
## transform data
require(reshape2)
h <- do.call(cbind, phat)
h.melt <- melt(h)
## rename variables so they look nicer on plots
names(h.melt) <- c("test","N","value")
## stripchart (not shown)
qplot(data = h.melt, x = value,y = N,color=N)+geom_point()
## histogram (not shown)
ggplot(h.melt,aes(x=value,fill=N))+geom_histogram()+facet_grid(N~.)
## dotplot with rug (not shown)
ggplot(h.melt,aes(x=value,fill=N))+geom_dotplot()+facet_grid(N~.)+geom_rug()
##density plot with rug (shown below)
ggplot(h.melt,aes(x=value,fill=N))+geom_density()+facet_grid(N~.)+geom_rug()
[/g0] Лучшее, что я мог сделать по вашей подсказке, это:
qplot(data = h.melt, x = value,y = Var2)+ geom_point(shape=1, size=5)
, но все же он не отражает вероятности; точки должны быть сложены в виде своего рода гистограммы, чтобы отражать вероятности.
. Другой подход использует функцию плотности, но это может быть беспорядочно, если у меня есть много категорий образцов для построения.
ggplot(h.melt, aes(x=value, fill=Var2)) + geom_density(alpha=.5, position="identity")