【问题标题】:How to remove NA from facet_wrap in ggplot2?如何从 ggplot2 中的 facet_wrap 中删除 NA?
【发布时间】:2019-06-22 21:09:02
【问题描述】:

我正在尝试使用 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()

这就是我得到的:

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

enter image description here

无论感兴趣的变量是否为 NA,都包括每个变量和城市的行,最终解决了问题。这是我一直在寻找的:

Yield losses by municipalities with NA values

【问题讨论】:

  • 您希望看到的输出是什么?

标签: r ggplot2 na facet-wrap


【解决方案1】:

您可以在调用 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()

【讨论】:

    【解决方案2】:

    在数据调用周围包含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()
    

    【讨论】:

    • 感谢@phalteman 的建议!但是,它并没有完全解决问题。使用 na.omit 给出了一个没有 NA 图的分面图,但现在我在前两个图中缺少具有 NA 值的多边形
    • @albren,好的,您可以编辑您的问题以更具体地说明您希望看到的输出吗? (即玉米和大豆地块,其中一个或另一个有 NA 值?两者都有?以某种方式在它们之间划分?)
    • 我终于成功了。问题出在数据框本身:无论变量(此处为生产损失)是否为 NA,每种作物和城市都需要有一行。我的数据框不包含 NA 值的行。抱歉我的错误解释和不具体的问题:/
    • @albren,很高兴你解决了它。随意发布您的解决方案作为答案并接受它,以便其他人可以从您学到的知识中受益。
    猜你喜欢
    • 1970-01-01
    • 2020-05-21
    • 2021-10-01
    • 2021-01-13
    • 2021-08-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多