R 如何在ggplot2中固定轴并将多边形添加到插入贴图

R 如何在ggplot2中固定轴并将多边形添加到插入贴图,r,ggplot2,mapping,R,Ggplot2,Mapping,我正试图在ggplot2中为我的地图添加一些细节,但我是新加入该软件包的,不知道如何继续。代码和地图如下(忽略地图上奇怪的间距,我在Rstudio中拍摄了一张屏幕截图)。谢谢你看 我正在努力做到以下几点: 在x轴和y轴上添加纬度和经度记号。我在下面的脚本中对其进行了编码,但没有发生任何事情,不确定原因-没有出现错误 如果可能,我想在插图地图中添加一个框,显示较大地图的范围/覆盖范围,因为较小地图中的点(红色点)几乎不可见。我不知道如何在插入贴图中添加和放置多边形 以下是地图当前的外观,以供参考:

我正试图在ggplot2中为我的地图添加一些细节,但我是新加入该软件包的,不知道如何继续。代码和地图如下(忽略地图上奇怪的间距,我在Rstudio中拍摄了一张屏幕截图)。谢谢你看

我正在努力做到以下几点:

  • 在x轴和y轴上添加纬度和经度记号。我在下面的脚本中对其进行了编码,但没有发生任何事情,不确定原因-没有出现错误
  • 如果可能,我想在插图地图中添加一个框,显示较大地图的范围/覆盖范围,因为较小地图中的点(红色点)几乎不可见。我不知道如何在插入贴图中添加和放置多边形
  • 以下是地图当前的外观,以供参考:

    库(光栅)
    图书馆(GG2)
    图书馆(主题)
    图书馆(ggsn)
    图书馆(ggmap)
    图书馆(地图)
    图书馆(地图数据)
    地图数据
    
  • 纬度和经度记号正在消失,因为
    主题地图()
    -它将
    轴记号
    轴文字
    (除其他外)设置为
    元素空白()
    。让它们返回的一种方法是使用
  • 然后


    g3太棒了,效果非常好!非常感谢。如果我想用“Lat”和“Long”标记轴,我还需要做一些特殊的事情吗?我尝试在g1和g1_的创建过程中添加标准的“labs(y=”Latitude“,x=”经度“)”,但这两个位置都没有通过。
    theme_map
    还将
    axis.title
    设置为
    element_blank
    。将其设置为要显示的轴标题的
    element\u text
    。更新了答案。太棒了,谢谢。是否有一种简单的方法将轴文本从“lat”和“long”更改为完整单词?我尝试在整个代码中更改它,但它似乎从mapdata和mymap对象继承了“lat”和“long”。我尝试在mymap df中重命名标题,但它产生了一个错误。感谢所有帮助!
    xlab()
    ylab()
    函数将执行此操作。将它们添加到需要标记轴的绘图中。更新答案。
    library(raster)
    library(ggplot2)
    library(ggthemes)
    library(ggsn)
    library(ggmap)
    library(maps)
    library(mapdata)
    
    mapdata <- getData("GADM", country = "panama", level = 1)
    mymap <- fortify(mapdata)
    
    mypoint <- data.frame(long=c(-79.743, -79.696, -79.645, -79.595),
                          lat=c(9.160, 9.117, 9.058, 9.015),
                          group=c("L", "GW", "OGR", "LC"))
    mypoint2 <- data.frame(long=c(-79.846, -79.707, -79.665, -79.610),
                          lat=c(9.181, 9.112, 9.057, 9.014),
                          group=c("BCI", "G", "EH", "MF"))
    
    g1 <- ggplot() +
      geom_blank(data = mymap, aes(x=long, y=lat)) +
      geom_map(data = mymap, map = mymap, 
               aes(group = group, map_id = id),
               fill = "#b2b2b2", color = "black", size = 0.3) +
      coord_sf(xlim=c(-80,-79.5), ylim=c(8.9, 9.25), expand = FALSE) +
      geom_point(data = mypoint, aes(x = long, y = lat),
                 color = "black", size = 3) +
      geom_label(data = mypoint, aes(label = group, x = long, y = lat), 
                 size = 3, fontface = "bold", nudge_x = c(0.015, 0.02, 0.022, 0.018)) +
      geom_point(data = mypoint2, aes(x = long, y = lat),
                 color = "blue", size = 3) +
      geom_label(data = mypoint2, aes(label = group, x = long, y = lat), 
                 size = 3, fontface = "bold", nudge_x = c(-0.02, -0.018, -0.02, -0.02)) +
      scale_x_continuous(limits = c(-80,-79.5), expand = c(0, 0)) +
      scale_y_continuous(limits = c(8.9, 9.25), expand = c(0, 0)) +
      theme_map() +
      ggsn::scalebar(location = "bottomleft", dist = 5,
                     transform = TRUE, dist_unit = "km", model = 'WGS84',           
                     x.min = -79.97, x.max = -79.8,
                     y.min = 8.93, y.max = 9.25) +
      north(x.min = -79.6, x.max = -79.5,
            y.min = 9.2, y.max = 9.24,
            location = "toprgiht", scale = 0.1)
    
    g2 <- ggplotGrob(
      ggplot() +
        geom_polygon(data = mymap,
                     aes(x = long, y = lat, group = group),
                     fill = "#b2b2b2", color = "black", size = 0.3) +
        geom_point(data = mypoint, aes(x = long, y = lat),
                   color = "red", size = 0.5) +
        coord_map("polyconic") +
        theme_map() +
        theme(panel.background = element_rect(fill = NULL))
    )     
    
    g3 <- g1 +
      annotation_custom(grob = g2, xmin = -79.75, xmax = -79.51,
                        ymin = 8.9, ymax = 9.0)
    g3 
    
    g1_with_lbls <- g1 + 
      theme(
        axis.text = element_text(), 
        axis.ticks = element_line(),
        axis.title = element_text()
      ) +
      xlab("Longitude") +
      ylab("Lattitude")
    
    g2 <- ggplotGrob(
      ggplot() +
        geom_polygon(data = mymap,
                     aes(x = long, y = lat, group = group),
                     fill = "#b2b2b2", color = "black", size = 0.3) +
        geom_point(data = mypoint, aes(x = long, y = lat),
                   color = "red", size = 0.5) +
        coord_map("polyconic") +
        theme_map() +
        theme(
          panel.background = element_rect(fill = NULL)
        ) +
        geom_rect(
          aes(xmin = -80, xmax = -79, ymin = 8.5, ymax = 9.5), fill = NA, 
          col = "red", size = 1
        )
    )
    
    g3 <- g1_with_lbls +
      annotation_custom(grob = g2, xmin = -79.75, xmax = -79.51,
                        ymin = 8.9, ymax = 9.0)
    g3