ggplot2中geom_col/geom_bar如何为多组柱子分别设置统一填充色
解决方法
核心逻辑是给数据新增分组标识列,再将填充色映射到分组变量,即可通过scale_fill_manual自定义各组颜色。
步骤1:给数据集新增分组列
按照你要求的分组规则(前4行/中间5行/最后5行),基于行号生成分组标识:
library(dplyr) library(ggplot2) Dummydata <- Dummydata %>% mutate( # 按行号划分三组,分组名称可以自定义 host_group = case_when( row_number() <= 4 ~ "组1", row_number() <= 9 ~ "组2", TRUE ~ "组3" ) )
步骤2:修改绘图代码,映射填充色到分组变量
注意不要把fill参数写在geom_col()的括号内(属于全局固定填充),需要放在aes()中做变量映射:
plot_dummy_data <- Dummydata %>% ggplot(aes(x = Sample, y = r.K, fill = host_group)) + geom_col() + labs(y= "fitness cost", x = "sample") + # 自定义三个分组对应的填充色,色值可以自行替换 scale_fill_manual(values = c("组1" = "#FAE0B1", "组2" = "#73A6FF", "组3" = "#85E0B9")) # 如果不需要显示分组图例,可以加一行代码去掉 # plot_dummy_data <- plot_dummy_data + theme(legend.position = "none")
内容的提问来源于stack exchange,提问作者Yggdrasil
相关产品推荐
相关产品推荐

