2012-11-25 26 views
5

Przeprowadzam symulacje, które zastanawiałem się nad przygotowaniem wyników w pięknym ggplot, ale wygląda na to, że ggplot nie może zajmować się obiektami listy. Czy ktoś wie, jak wkleić wyniki do wykresu ggplot?Wykreślanie obiektu listy przy użyciu 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 
    } 

brzydki rozwiązanie:

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

Gdy masz listę w formacie ggplot2 sympatie, zobaczyć niektóre z przykładów na? Geom_dotplot –

+0

myślę, że pytanie jest prawdziwe pytanie, to znaczy w jaki sposób wykreślić dane zawarte w listach korzystających ggplot. – highBandWidth

Odpowiedz

7

ggplot2 potrzebują data.frame jako źródłem danych. Więc trzeba:

  1. przekształcić dane z reshape2 (lub plyr lub wielu innych narzędzi)
  2. działce przy użyciu qplot lub ggplot

    np

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

Po prostu odrzućmy tę odpowiedź, możemy nazwać kolumny tak, aby wyglądały lepiej na wykresie i wypróbować histogramy, wykresy gęstości, kropki i może dodać dywaniki. Rzeczy takie jak: 'nazwy (h.melt) <- c (" test "," N "," wartość ") ggplot (h.melt, aes (x = wartość, wypełnienie = N)) + geom_histogram() + facet_grid (N ~.) + geom_rug() ggplot (h.melt, aes (x = wartość, wypełnienie = N)) + geom_dotplot() + facet_grid (N ~.) + geom_rug() ggplot (h.melt, aes (x = wartość, wypełnienie = N)) + geom_density() + facet_grid (N ~.) + geom_rug() ' – MattBagg

1

Najlepsze co mogę zrobić Poniżej znajduje się następująca informacja:

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

ale nadal nie odzwierciedla prawdopodobieństw; punkty powinny być ułożone w stosy jako rodzaj histogramu, aby odzwierciedlić prawdopodobieństwa.

Innym podejściem jest użycie funkcji gęstości, ale może to być kłopotliwe, jeśli mam wiele próbek do wykreślenia.

ggplot(h.melt, aes(x=value, fill=Var2)) + geom_density(alpha=.5, position="identity") 
Powiązane problemy