如何在R语言ggplot2条形图中实现三色填充?
修改后的代码实现三色填充
直接调整数据分类逻辑与颜色映射,同时清理冗余绘图代码,最终实现支持红(输)/黄(平)/绿(赢)三色填充的条形图,代码如下:
plot1 <- ggplot(data=puck3 %>% mutate(win_loss = case_when( wnls < 0 ~ "loss", wnls == 0 ~ "draw", wnls > 0 ~ "win" )), aes(x=GP, y=wnls, fill = win_loss)) + geom_col(width=0.5) + # geom_col等价于stat="identity"的geom_bar,无需重复定义 scale_fill_manual(values = c("loss" = "red", "draw" = "yellow", "win" = "green")) + ylim(-5,5)
关键改动说明:
- 多类别划分:用
case_when()替代原ifelse(),清晰划分出loss(-1)、draw(0)、win(1)三个结果类别,比嵌套ifelse可读性更强 - 三色映射:在
scale_fill_manual()中通过键值对明确绑定每个类别与对应颜色,添加平局的黄色映射,避免因类别顺序导致颜色匹配错误 - 冗余代码清理:删除重复的
geom_bar(stat="identity", width=0.5),因为geom_col()本身就是stat="identity"的条形图实现,二者保留其一即可
内容的提问来源于stack exchange,提问作者user2561726
相关产品推荐
相关产品推荐

