如何从ggplot2中的facet_wrap中删除NA?

时间:2019-01-29 17:04:20

标签: r ggplot2 na facet-wrap

我正在尝试使用facet_wrap在ggplot2中制作多边形地图。我的变量“作物”中有两个因子水平(大豆,玉米)。但是,我得到了三个图:大豆,玉米和一个具有NA值的图。此外,前两个方面均不显示NA值-

这是我制作地图的代码:

ggplot(study_area.map, aes(x=long, y=lat, group=group)) + 
  geom_polygon(aes(fill=brazil_loss_new2)) + 
  geom_path(colour="black") + 
  facet_wrap(~crop, ncol=2, drop=T) + 
  scale_fill_brewer(na.value="grey", palette="Blues", 
    name="Average production lossess\n per municipality", 
    breaks = levels(study_area.map$brazil_loss_new2), 
    labels = levels(study_area.map$brazil_loss_new2)) + 
  theme() + 
  coord_fixed()

这就是我得到的:

enter image description here

如果使用na.omit,我将得到下图(更好,但前两个图中仍缺少NA值)

enter image description here

无论变量是否为NA,都为每个变量和市镇添加行,最终解决了该问题。这是我要找的东西:

Yield losses by municipalities with NA values

2 个答案:

答案 0 :(得分:0)

在数据通话中包含na.omit()会为您带来想要的东西吗?

ggplot(na.omit(study_area.map), aes(x=long, y=lat, group=group)) + 
  geom_polygon(aes(fill=brazil_loss_new2)) + 
  geom_path(colour="black") + 
  facet_wrap(~crop, ncol=2, drop=T) + 
  scale_fill_brewer(na.value="grey", palette="Blues", 
    name="Average production lossess\n per municipality", 
    breaks = levels(study_area.map$brazil_loss_new2), 
    labels = levels(study_area.map$brazil_loss_new2)) + 
  theme() + 
  coord_fixed()

答案 1 :(得分:0)

您可以在调用ggplot函数时删除不适用的NA。删除核心数据功能中的NA。这样一来,就不会密谋他们

ggplot(data = study_area.map[!(is.na(study_area.map[$brazil_loss_new2)),], aes(x=long, y=lat, group=group))+ 
geom_polygon(aes(fill=brazil_loss_new2))+ 
geom_path(colour="black")+ facet_wrap(~crop, ncol=2, drop=T)+ scale_fill_brewer(na.value="grey", palette="Blues", name="Average production lossess\n per municipality", breaks =levels(study_area.map$brazil_loss_new2), labels=levels(study_area.map$brazil_loss_new2))+ 
theme()+ 
coord_fixed()