我正在尝试在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栏。
答案 0 :(得分:5)
您可以尝试在代码的第一行使用subset()
函数
ggplot(data=subset(data, !is.na(luse)), aes(x=luse, y=rich))+
中所述
答案 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()