r语言 - 在单独的图表中绘制多个直方图系列 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()

我想在 2x2 网格上为每个系列绘制四个单独的直方图:y_1_list、y_2_list、y_3_list、y_4_list。

我能在网上找到的唯一资源是更复杂的绘图:a(绘制来自同一变量的数据,由其他变量拆分 b( 在同一图表上绘制数据。

除了下面的答案,你也可以在ggplot中使用facet_grid((。使用 facet_grid(( 或 facet_wrap(( 更流畅,但如果您需要将其他类型的图形添加到同一图形中或包含特定的图例,我还使用:

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

尝试重建数据框并在 ggplot 中使用facet_wrap

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

最新更新