8

結果を美しいggplotにプロットしたいと思っていたシミュレーションをいくつか実行していますが、ggplotはリストオブジェクトを処理できないようです。結果をggplotチャートに貼り付ける方法を知っている人はいますか?

   N <- 8619170         
   nn <- c(1000, 1200, 3000)
   p <- .27     
   nsim <- 100

    phat <- list()
    for (i in 1:length(nn)) {
    n <- nn[i]
    x <- rhyper(nsim, N * p, N * (1 - p), n)
    phat[[i]] <- x / n
    }

醜い解決策:

    names(phat) <- paste("n=", nn)
    stripchart(phat, method="stack")
    abline(v=p, lty=2, col="red")
4

2 に答える 2

8

ggplot2には、ソースデータとしてdata.frameが必要です。だからあなたはする必要があります:

  1. reshape2(またはplyrまたは他の多くのツール)を使用してデータを変換します
  2. qplotまたはggplotを使用してプロットする

    例えば

     ## 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() 
    

    ここに画像の説明を入力してください

于 2012-11-25T20:35:56.417 に答える
2

あなたの手がかりに従って私ができる最善のことは次のとおりです。

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")
于 2012-11-25T22:03:12.390 に答える