如何在ggplot中为整数性别设置字符串轴标签及柱状图颜色?
整数性别字段的柱状图实现方案
核心实现思路
无需修改原数据集的Gender字段,直接在ggplot中完成临时转换、标签替换和颜色自定义:
- 临时将整数类型的性别字段转为分类变量
- 把X轴上的0/1映射为"Female"/"Male"
- 直接在绘图时计算每组的总下注数
- 为不同性别指定自定义颜色
完整代码示例
# 绘制性别对应总下注数的柱状图 p_bar <- ggplot(data = data, aes(x = factor(Gender), y = BetsA, fill = factor(Gender))) + # 按性别分组计算总下注数并绘制柱状图 stat_summary(fun = sum, geom = "col", width = 0.6) + # 替换X轴整数标签为文本 scale_x_discrete(labels = c("Female", "Male")) + # 自定义颜色:Female设为紫色,Male设为蓝色 scale_fill_manual(values = c("#9933FF", "#3366FF"), labels = c("Female", "Male")) + # 添加标题与坐标轴标签 ggtitle("性别与总下注数的关系") + xlab("赌徒性别") + ylab("总下注数") + # 可选:去掉重复的图例 theme(legend.position = "none") # 输出图形 p_bar
补充方案:先聚合数据再绘图
如果偏好提前计算总下注数,可结合dplyr完成数据聚合后再绘图:
library(dplyr) # 先计算不同性别的总下注数 sum_data <- data %>% group_by(Gender) %>% summarise(Total_Bets = sum(BetsA)) # 基于聚合后的数据绘图 ggplot(sum_data, aes(x = factor(Gender), y = Total_Bets, fill = factor(Gender))) + geom_col(width = 0.6) + scale_x_discrete(labels = c("Female", "Male")) + scale_fill_manual(values = c("#9933FF", "#3366FF")) + ggtitle("性别与总下注数的关系") + xlab("赌徒性别") + ylab("总下注数") + theme(legend.position = "none")
内容的提问来源于stack exchange,提问作者Temple Fugate
相关产品推荐
相关产品推荐

