如何解决ggplot2条形图(barplot)中出现NA值的问题?
问题原因及解决办法
问题根源
你的df数据中,Condition列的"Down "值末尾带有空格,但绘图代码里factor(Condition, levels = c('Down','Up','ns'))指定的水平是无空格的'Down',两者不匹配,导致所有带空格的"Down "被判定为无效水平,转换为NA,最终绘图时出现NA对应的异常区域。
解决方法
方案1:清理数据中的空格
先对Condition列做首尾空格清理,统一格式:
# 去除Condition列字符串首尾的空格 df$Condition <- trimws(df$Condition)
之后再运行原绘图代码即可正常显示。
方案2:修改levels匹配原始数据
如果不想修改原始数据,直接调整factor的levels参数,匹配带空格的"Down ":
ggplot(df,aes(fill = factor(Condition, levels = c('Down ','Up','ns')), y = Number.of.genes, x = Cancer.type)) + geom_bar(position="stack", stat="identity")+theme_bw()+ theme(axis.text.x = element_text(size = 10, angle = 45, hjust = 1, colour = 'black'))+ scale_fill_manual(values=c("seagreen2", "deepskyblue3",'goldenrod1'))+ labs(fill = 'Condition', x = NULL)
效果验证
两种方法都能让Down类别正确匹配到指定填充色,消除图中的NA异常区域,堆叠条形图显示正常。
内容的提问来源于stack exchange,提问作者zahra abdi
相关产品推荐
相关产品推荐

