如何修改ggplot条形图分类标签并在条形内添加均值?
解决方案
直接给你修改后的完整代码,同时解决两个需求:
my_data %>% ggplot(aes(x = ind, y = values, fill = ind)) + geom_bar(stat = "summary", fun = mean) + # 替换x轴分类标签 scale_x_discrete(labels = c("Group 1", "Group 2")) + # 在条形内添加白色均值文本 geom_text(aes(y = average_time, label = round(average_time, 2)), color = "white", fontface = "bold") + theme_minimal() + theme(legend.position = "none")
关键改动说明
- 修正映射逻辑:把原代码里顺序颠倒的
aes(values, x=ind)改成aes(x=ind, y=values),明确x轴是分组变量、y轴是观测值,避免绘图逻辑混淆。 - 修改x轴标签:通过
scale_x_discrete()直接替换原有标签,注意labels的顺序要和你数据中ind列的水平顺序对应(如果原数据里ind的水平是先part1后part2,当前顺序就正确)。 - 添加条形内数值:利用你已有的
average_time列,用geom_text()定位文本到条形顶部(如果想让文本稍微靠下一点,可以改成y = average_time * 0.9),用round()保留两位小数让数值更整洁,白色加粗的文本在条形内辨识度更高。
如果你希望从数据层面直接修改分组标签,也可以先调整因子水平:
my_data$ind <- factor(my_data$ind, levels = c("part1", "part2"), labels = c("Group 1", "Group 2"))
这样后续绘图时x轴会直接使用新标签,无需再调用scale_x_discrete()。
内容的提问来源于stack exchange,提问作者Joseph Dalchialpo
相关产品推荐
相关产品推荐

