【问题标题】:How do I add a ggplot map object under another ggplot map object?如何在另一个 ggplot 地图对象下添加一个 ggplot 地图对象?
【发布时间】:2021-11-23 08:56:09
【问题描述】:

我想将背景图(存储为 ggplot 对象)添加到另一个 ggplot 地图,因为某些州有 NA 被我删除,所以它们被排除在地图之外。我使用patchwork 尝试合并,但它只是将它们并排放置。我希望 back_map “低于”p

library(ggplot2)
library(tidyverse)
library(mapdata)
library(patchwork)
library(dplyr)

MainStates <- map_data("state")
State_Name <- c("alabama","arkansas","arizona","california","colorado")
Sales <- c(100,200,250,275,310)
df2 <- data.frame(State_Name,Sales)
MergedStates <- inner_join(MainStates, df2, by = c("region" = "State_Name"))
back_map <- ggplot() + geom_polygon(data=MainStates, aes(x=long, y=lat, group=group),
                       color="black", fill="white")

p <- ggplot() + geom_polygon(data = MergedStates,
                             aes(x=long, y=lat, group=group),
                             fill = ifelse(MergedStates$Sales <= 
                                      mean(MergedStates$Sales),"red","green"), size = 0.2) 
                                      + back_map
p

【问题讨论】:

  • 我还没有运行你的代码,但通常当我制作缺少数据的地图时,我会确保使用包含缺失数据的连接类型,例如左连接与我的左侧的区域(州等)。这样形状将被绘制但具有 NA 值
  • 您也可以 (and probably should) 使用 ifelse 语句来分配填充 inside aes,而不使用 $
  • 除了camille的cmets:不需要拼凑。您可以在上面绘制第二张地图。第一个使用ggplot() + geom_polygon() + geom_polygon()

标签: r ggplot2 patchwork


【解决方案1】:

不需要创建单独的back_map 对象。背景图首先出现在代码中,如下所示:

    p <- ggplot() + geom_polygon(data = MainStates, aes(x=long, y=lat, 
    group=group),
           color = "black", fill = "white") +
      geom_polygon(data = MergedStates,
           aes(x=long, y=lat, group=group), 
           fill = ifelse(MergedStates$sngIYA <= 
    mean(MergedStates$sngIYA),"red","green"), 
           color = "black", size = 0.2)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多