R语言使用bind_rows合并数据框如何自定义id值以设置对应图例
解决方法
你可以通过以下两种方式自定义bind_rows生成的id列取值:
方法1:合并时直接为数据框命名
调用bind_rows时直接给传入的两个数据框设置自定义名称,生成的id列会自动对应你设置的名称,不需要额外转换:
# 示例中将B对应命名为「全量样本」,C对应命名为「子样本」,你可以替换成自己需要的名称 bind_rows("全量样本" = B, "子样本" = C, .id = "id")
方法2:合并后手动修改id列取值
如果已经完成合并,也可以单独修改id列的取值:
bind_rows(B, C, .id = "id") %>% mutate(id = recode(id, "1" = "全量样本", "2" = "子样本"))
调整后的完整绘图代码
修改后你的绘图代码可以写成如下形式,同时支持自定义图例标题:
bind_rows("全量样本" = B, "子样本" = C, .id = "id") %>% filter(question %in% c("Q1", "Q2")) %>% ggplot() + aes(mean, question, fill = id, xmin = mean - sd, xmax = mean + sd) + geom_col(position = "dodge2", width = 0.5) + geom_errorbar(position = position_dodge2(padding = 0.5), width = 0.5) + labs(fill = "数据分组") + # 这里可以修改图例的标题 theme_minimal()
运行上述代码后,生成的图例就会显示你自定义的数据框名称,不需要额外调整。
内容的提问来源于stack exchange,提问作者Espejito
相关产品推荐
相关产品推荐

