使用ggplot绘制自定义颜色柱状图及添加犯规数据列的问题
问题解决:自定义柱状图颜色+添加fouls分组柱
1. 解决柱子颜色不生效的问题
你用scale_fill_manual但颜色没变化,核心原因是没有在aes()里将fill与分类变量绑定。修改代码,把fill = name加入aes(),让每个联赛的柱子对应独立填充色,再配合scale_fill_manual即可生效:
library(ggplot2) ggplot(GoalsAndFouls, aes(x = name, y = goals, fill = name)) + labs(x = "联赛", y = "进球数") + geom_bar(stat = "identity") + scale_fill_manual(values = c("red", "green", "blue", "grey", "orange")) + theme(legend.position = "none")
2. 添加每个联赛的fouls柱子(分组柱状图)
要同时展示进球数和犯规数,需先将宽格式数据转换为长格式,再绘制分组柱状图:
步骤1:转换数据格式
library(tidyr) # 将goals和fouls列转成长格式 long_data <- pivot_longer(GoalsAndFouls, cols = c(goals, fouls), names_to = "统计指标", values_to = "数值")
步骤2:绘制分组柱状图
ggplot(long_data, aes(x = name, y = 数值, fill = 统计指标)) + labs(x = "联赛", y = "数值", fill = "指标类型") + geom_bar(stat = "identity", position = position_dodge(width = 0.8)) + # 自定义两种指标的颜色(可选) scale_fill_manual(values = c("goals" = "#E63946", "fouls" = "#457B9D"))
内容的提问来源于stack exchange,提问作者SonnyJMoore
相关产品推荐
相关产品推荐

