Deixo uma versão ggplot. Você precisa escrever mais códigos. Mas, se você gosta de manipular seus mapas com mais detalhes, eu diria que você deve tentar. Usei dados do GADM para desenhar o mapa principal; Eu baixei o arquivo getData()
no raster
pacote. Então, eu usei fortify()
para gerar um quadro de dados para o ggplot. Então, desenhei o mapa principal. Usando scale_x_continuous()
e scale_y_continuous()
, você pode recortar o mapa. O ggsn
pacote permite adicionar a seta e a barra de escala. Observe que você precisa especificar onde deseja. Para o mapa inserido, você pode usar dados menores para desenhar os Estados. Então eu usei map_data("state")
. Desenhei um mapa e o envolvi ggplotGrob()
. Você precisa criar um objeto grob para criar um mapa inserido posteriormente. Finalmente, você usa annotation_custom()
e adiciona o mapa inserido ao mapa principal.
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)