Create a histogram (use **ggplot2**) of **length** within **age** of 5:8 putting the plots in a $2 \times 2$ grid in one file.
时间: 2024-09-16 14:05:43 浏览: 83
在R中,你可以使用ggplot2库创建一个由年龄分段的长度分布(histogram)的矩阵图,这里是一个示例代码:
首先,确保已经安装了ggplot2和其他必要的库,如dplyr用于数据处理,如果还没有安装,可以运行 `install.packages(c("ggplot2", "dplyr"))`。
```R
# 加载所需的库
library(ggplot2)
library(dplyr)
# 假设你已经有了一个数据集df,包含age和length两个列
# 这里我们生成一些随机数据作为示例
set.seed(123) # 设置种子保证结果可复现
df <- tibble(age = sample(5:8, 100, replace = TRUE),
length = rnorm(100, mean = ifelse(age >= 6, 10, 8), sd = 2))
# 利用dplyr按年龄分组,并计算每个年龄段的长度频率
hist_data <- df %>%
group_by(age) %>%
summarize(freq = sum(!is.na(length)))
# 创建一个2x2网格布局
grid <- expand.grid(rows = 1:2, cols = 1:2)
# 为每个格子创建一个子图
plots <- lapply(grid, function(row_col) {
row <- row_col[1]
col <- row_col[2]
ggplot(hist_data, aes(x = length, fill = age)) +
geom_histogram(binwidth = 1, position = "identity") +
facet_wrap(~ factor(age, labels = c("5-6", "6-7", "7-8")), ncol = 2, scales = "free_y", strip.position = "top") +
theme(strip.background = element_rect(fill = "gray90"),
panel.spacing.y = unit(0.2, "lines")) +
labs(title = paste0("Age Group: ", row * 2 - row + col),
x = "Length",
y = "Frequency")
})
# 将所有子图组合成一个大的图
do.call(ggarrange, plots, ncol = 2, layout_matrix = as.matrix(grid))
```
这个代码会创建一个4个小图的网格,每个小图展示了一个特定年龄范围内的长度分布。
阅读全文