19

我正在尝试在 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 个用于 luse 的 NA。不幸的是,我无法发布图片,但想象一下我的图表中添加了一个 NA 条。

4

3 回答 3

8

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

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

如建议:从 ggplot 中消除 NA

于 2016-11-27T12:57:07.687 回答
2

这是使用上述评论!is.na()filter()tidyverse/dplyr 合并的正式答案。如果您有基本的 tidyverse 操作,例如过滤 NA,您可以ggplot按照建议在调用中直接执行,以避免创建新的数据框:

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

于 2019-05-15T16:38:22.077 回答
0

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

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

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

于 2018-02-28T01:25:12.533 回答