这是我的代码:
#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)绘制同一图表上的数据。
答案 0 :(得分:1)
尝试重建数据框并在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")
答案 1 :(得分:0)
除了以下答案,您还可以在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)