RStudio中ggplot柱状图Bait_Type自定义排序问题求助
解决ggplot2柱状图中Bait_Type排序问题的方法
问题核心是你仅对数据做了arrange行排序,但ggplot2绘制时是依据因子的水平(levels)确定显示顺序的,arrange仅改变数据行顺序,不会修改因子水平,因此无效。
正确操作步骤:
- 将
Bait_Type转换为指定顺序的因子,注意使用正确的变量名(你之前报错是误用了name而非Bait_Type) - 绘图时ggplot会自动遵循因子的水平顺序展示
修正后的完整代码:
# 把Bait_Type转换为指定顺序的因子 AVG_CH_24Hr <- avg_ch_24hr %>% mutate(Bait_Type = factor(Bait_Type, levels = c('0% Bio', '50% Bio', '100% Bio', 'Pilchard'))) # 绘制柱状图 Lure_1day <- ggplot(AVG_CH_24Hr, aes(fill = Bait_Type, y = avg_per_ch_1d, x = Treatment)) + geom_bar(position = 'dodge', stat = 'identity') + ggtitle('Average Percent Change 24hrs') + ylab('Average % Change') + theme_bw() # 输出图形 print(Lure_1day)
关键说明:
mutate中必须使用正确的变量名Bait_Type,这是解决你之前报错的核心- 因子的
levels参数直接定义了显示顺序,ggplot会严格按照该顺序排列柱子和图例 - 后续若需调整顺序,只需修改
levels向量内的元素顺序即可
内容的提问来源于stack exchange,提问作者tskpowell
相关产品推荐
相关产品推荐

