2012-11-25 9 views
5

Ich bin mit einigen Simulationen, die ich wollte die Ergebnisse in einem schönen ggplot plotten, aber es scheint, dass ggplot kann nicht mit Listenobjekte befassen. Weiß jemand, wie man die Resultate in ggplot Diagramm einfügt?Plotten Liste Objekt mit 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 
    } 

hässliche Lösung:

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

Sobald Sie Ihre Liste in einem Format haben, das mag ggplot2, um einige Beispiele sehen? Geom_dotplot –

+0

Ich denke, die Frage eine wirkliche Frage ist, das heißt, wie die Daten in Listen gegeben plotten ggplot verwenden. – highBandWidth

Antwort

7

ggplot2 brauchen eine data.frame als Quelldaten. So müssen Sie:

  1. die Daten mit reshape2-Transformation (oder plyr oder vielen anderen Werkzeugen)
  2. Grundstück mit qplot oder ggplot

    zB

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

    enter image description here

+2

Um diese Antwort ein wenig auszudiskutieren, könnten wir die Spalten so benennen, dass sie in der Handlung besser aussehen und Histogramme, Dichteplots, Punktdiagramme und vielleicht auch Teppiche verwenden. Dinge wie: 'Namen (h.melt) <- c (" test "," N "," Wert ") ggplot (h.melt, aes (x = Wert, füllen = N)) + geom_histogram() + facet_grid (N ~.) + geom_rug() ggplot (h.melt, aes (x = wert, fill = N)) + geom_dotplot() + facet_grid (N ~.) + geom_rug() ggplot (h.melt, aes (x = Wert, Füllung = N)) + geom_density() + facet_grid (N ~.) + geom_rug() ' – MattBagg

1

Das Beste, was ich tun konnte fol lowing your clue ist:

qplot(data = h.melt, x = value,y = Var2)+ geom_point(shape=1, size=5) 

aber immer noch nicht die Wahrscheinlichkeiten widerspiegelt; Die Punkte sollten als eine Art Histogramm gestapelt werden, um die Wahrscheinlichkeiten widerzuspiegeln.

Ein anderer Ansatz ist die Verwendung der Dichte-Funktion, aber es kann chaotisch Dinge, wenn ich viele Proben Kategorien zu plotten haben.

ggplot(h.melt, aes(x=value, fill=Var2)) + geom_density(alpha=.5, position="identity") 
Verwandte Themen