2017-07-21 1 views
0

Voici mon code:Plot plusieurs séries d'histogramme dans des tableaux distincts ggplot2

#set parameters 
p <- 0.41 
n <- 100 
s <- 200 

#generate data 
y_1_list = c() 
for (i in 1:s){ 
    for (j in 1:n){ 
    vars[j] <- rbinom(1, 1, p) 
    } 
    y_1_list[i] <- sum(vars)/n 
} 

y_2_list = c() 
for (i in 1:s){ 
    for (j in 1:n){ 
    vars[j] <- rbinom(1, 1, p) 
    } 
    y_1 <- sum(vars)/n 
    y_2_list[i] <- sum(y_1 - vars)^2/n 
} 

y_3_list = c() 
for (i in 1:s){ 
    for (j in 1:n){ 
    vars[j] <- rbinom(1, 1, p) 
    } 
    y_1 <- sum(vars)/n 
    y_3_list[i] <- y_1/n 
} 

y_4_list = c() 
for (i in 1:s){ 
    for (j in 1:n){ 
    vars[j] <- rbinom(1, 1, p) 
    } 
    y_1 <- sum(vars)/n 
    y_4_list[i] <- y_1/sqrt(n) 
} 

#bind vectors into data frame 
samples <- data.frame(y_1_list, y_2_list, y_3_list, y_4_list) 

#ggplot histograms 
ggplot(data = samples, aes(y_1_list)) + 
    geom_histogram() 

Je voudrais tracer quatre histogrammes séparés, sur une grille de 2x2, pour chacune de ces séries: y_1_list, y_2_list, y_3_list, y_4_list .

Les seules ressources que je peux trouver en ligne sont pour des parcelles plus compliquées: a) tracer des données de la même variable divisée par une autre variable b) tracer des données sur la même carte.

Répondre

1

Essayez de reconstruire la trame de données et l'utilisation facet_wrap dans ggplot

#bind vectors into data frame 
samples <- data.frame(y = c(y_1_list, y_2_list, y_3_list, y_4_list), 
         ylabel = rep(c("y1", "y2", "y3", "y4"), each = 200)) 

#ggplot histograms 
ggplot(data = samples, aes(y)) + 
    geom_histogram() + 
    facet_wrap(~ylabel, nrow = 2, scale = "free_x") 
0

Outre ci-dessous réponse, vous pouvez également utiliser facet_grid() dans ggplot. L'utilisation de facet_grid() ou de facet_wrap() est plus fluide, mais si vous devez ajouter d'autres types de graphiques dans la même figure ou inclure une légende spécifique, j'utilise également:

#Load library "gridExtra" 
library(gridExtra) 

#Plot graphs in 2x2: 
grid.arrange(
    ggplot(data = samples, aes(y_1_list))+geom_histogram(), 
    ggplot(data = samples, aes(y_2_list))+geom_histogram(), 
    ggplot(data = samples, aes(y_3_list))+geom_histogram(), 
    ggplot(data = samples, aes(y_4_list))+geom_histogram(), 
    ncol=2)