NA是在boxplot ggplot2中绘制的

时间:2013-06-17 11:17:24

标签: r ggplot2 boxplot na

我正在尝试在ggplot2中绘制一个简单的箱形图。我有物种丰富性与土地利用类。但是,我的数据中有2个NA。出于一些奇怪的原因,他们正在被绘制,即使他们被R理解为NA。任何建议要删除它们?

我正在使用的代码是:

ggplot(data, aes(x=luse, y=rich))+
  geom_boxplot(mapping = NULL, data = NULL, stat = "boxplot", position = "dodge", outlier.colour = "red", outlier.shape = 16, outlier.size = 2, notch = F, notchwidth = 0.5)+
  scale_x_discrete("luse", drop=T)+
  geom_smooth(method="loess",aes(group=1))

然而,该图包含2个NA用于luse。不幸的是我无法发布图片,但想象一下我的图表中正在添加一个NA栏。

3 个答案:

答案 0 :(得分:5)

您可以尝试在代码的第一行使用subset()函数

ggplot(data=subset(data, !is.na(luse)), aes(x=luse, y=rich))+

如:Eliminating NAs from a ggplot

中所述

答案 1 :(得分:0)

您还可以在dplyr / tidyverse中使用filter()函数:

data %>% filter(is.na(luse) == FALSE) %>% 
   ggplot(aes(x=luse, y=rich)) +
   geom_boxplot()

这样您就不必创建新对象了。

答案 2 :(得分:0)

以下是使用以上评论将tidyverse / dplyr的!is.na()filter()合并的正式答案。如果您有基本的整理操作(例如过滤NA),则可以按照建议在ggplot调用中进行操作,以避免产生新的数据帧:

ggplot(data %>% filter(!is.na(luse)), aes(x = luse, y = rich)) + geom_boxplot()