You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ggplot绘制填充柱状图移除NA失效 如何调整Y轴使0在底1在顶

解决方案

移除NA值不生效的问题

geom_bar()中的na.rm = TRUE仅会移除几何层计算过程中产生的缺失值,不会处理映射到fill属性的category列中的NA值——这类NA会被填充色标度默认识别为独立分类进行展示,因此仅在geom层加参数无法达到隐藏NA的效果。
两种修复方式二选一即可:

  • 预处理数据:绘图前先过滤掉category为NA的行
    library(dplyr)
    con_threat <- con_threat %>% filter(!is.na(category))
    
  • 不修改源数据:在填充标度中添加参数关闭NA值的展示,不需要提前过滤数据,在scale_fill_brewer()中设置na.translate = FALSE即可。

Y轴顺序调整

position = "fill"默认的Y轴规则就是0在底部、1在顶部,如果当前图轴顺序不符合预期,大概率是没有显式限定Y轴范围,或者误加了轴反转类的代码。显式调用Y轴连续标度强制固定范围和刻度即可,不需要加反转函数。


修正后完整代码

ggplot(con_threat, aes(fill= category, y=n, x=report_group.x)) + 
  geom_bar(position="fill", stat="identity", na.rm = TRUE) +
  labs(
    x = 'Marine animal type', 
    y = 'Percentage of animals in each status', 
    title = 'Conservation status of 4 different marine animals' # 修正了原代码中mairne的拼写错误
  ) +
  scale_fill_brewer(palette="Spectral", na.translate = FALSE) + # 隐藏NA分类
  scale_y_continuous(limits = c(0, 1), breaks = seq(0, 1, 0.2)) + # 固定Y轴范围,确保0在底1在顶
  theme(axis.text.x = element_text(angle = 30, vjust = 1, hjust=1))

内容的提问来源于stack exchange,提问作者rhelp

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.03 07:06:47