如何用facet_wrap批量绘制不同bins参数的直方图?以palmerpenguins为例
用facet_wrap批量生成不同bins的直方图
可行,核心思路是先构造包含不同bins参数标记的数据集,再通过分面实现批量绘图,具体步骤如下:
1. 准备数据
先加载依赖包,定义要测试的bins序列,再把原数据集按每个bins值复制一份,同时添加bins列标记当前分组:
library(palmerpenguins) library(tidyverse) # 定义要测试的bins数量序列 bins_vec <- c(3, 5, 7) # 构造带bins标记的数据集 penguins_bins <- map_dfr(bins_vec, function(b) { penguins %>% mutate(bins = b) })
2. 批量绘图
单次调用ggplot即可生成所有分面的直方图,在geom_histogram中指定bins = .data$bins,用facet_wrap按bins分面,可选scales = "free_x"让每个分面的x轴自适应:
ggplot(penguins_bins, aes(x = bill_length_mm)) + geom_histogram(bins = .data$bins, fill = "#2E86AB", color = "white") + facet_wrap(~bins, scales = "free_x", labeller = label_both) + labs(title = "不同bins数量的企鹅喙长直方图", x = "喙长(mm)", y = "频数") + theme_minimal()
补充说明
- 这种方式是把原数据按bins数量拆分成多个子集,每个子集对应一个bins参数,再通过分面整合到同一张图里
- 要测试更多bins值,只需修改
bins_vec即可,比如加入2,4,6等 label_both能让分面标题显示bins: 3这类清晰格式,方便区分不同参数的图
内容的提问来源于stack exchange,提问作者BLP92
相关产品推荐
相关产品推荐

