Je laisse une version ggplot. Vous devez écrire plus de codes. Mais, si vous aimez manipuler vos cartes avec plus de détails, je dirais qu'il faut essayer. J'ai utilisé les données GADM pour dessiner la carte principale; J'ai téléchargé le fichier avec getData()
dans le raster
package. Ensuite, j'ai utilisé fortify()
afin de générer une trame de données pour ggplot. Ensuite, j'ai dessiné la carte principale. À l'aide de scale_x_continuous()
et scale_y_continuous()
, vous pouvez découper la carte. Le ggsn
package vous permet d'ajouter la flèche et la barre d'échelle. Notez que vous devez spécifier où vous les voulez. Pour la carte en encart, vous pouvez utiliser des données plus petites pour dessiner les États. J'ai donc utilisé map_data("state")
. J'ai dessiné une carte et l'ai enveloppée avec ggplotGrob()
. Vous devez créer un objet grob pour créer une carte en encart ultérieurement. Enfin, vous utilisez annotation_custom()
et ajoutez la carte en encart à la carte principale.
library(raster)
library(ggplot2)
library(ggthemes)
library(ggsn)
mapdata <- getData("GADM", country = "usa", level = 1)
mymap <- fortify(mapdata)
mypoint <- data.frame(long = -121.6945, lat = 39.36708)
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) +
geom_point(data = mypoint, aes(x = long, y = lat),
color = "black", size = 2) +
scale_x_continuous(limits = c(-125, -114), expand = c(0, 0)) +
scale_y_continuous(limits = c(32.2, 42.5), expand = c(0, 0)) +
theme_map() +
scalebar(location = "bottomleft", dist = 200,
dd2km = TRUE, model = 'WGS84',
x.min = -124.5, x.max = -114,
y.min = 33.2, y.max = 42.5) +
north(x.min = -115.5, x.max = -114,
y.min = 40.5, y.max = 41.5,
location = "toprgiht", scale = 0.1)
foo <- map_data("state")
g2 <- ggplotGrob(
ggplot() +
geom_polygon(data = foo,
aes(x = long, y = lat, group = group),
fill = "#b2b2b2", color = "black", size = 0.3) +
geom_point(data = mypoint, aes(x = long, y = lat),
color = "black", size = 2) +
coord_map("polyconic") +
theme_map() +
theme(panel.background = element_rect(fill = NULL))
)
g3 <- g1 +
annotation_custom(grob = g2, xmin = -119, xmax = -114,
ymin = 31.5, ymax = 36)