Ich hinterlasse eine ggplot-Version. Sie müssen mehr Codes schreiben. Aber wenn Sie Ihre Karten mit mehr Details manipulieren möchten, würde ich sagen, probieren Sie es aus. Ich habe GADM-Daten verwendet, um die Hauptkarte zu zeichnen. Ich habe die Datei mit getData()
im raster
Paket heruntergeladen . Dann habe ich verwendet fortify()
, um einen Datenrahmen für ggplot zu generieren. Dann habe ich die Hauptkarte gezeichnet. Mit scale_x_continuous()
und scale_y_continuous()
können Sie die Karte ausschneiden. Mit dem ggsn
Paket können Sie den Pfeil und die Skalierungsleiste hinzufügen. Beachten Sie, dass Sie angeben müssen, wo Sie sie möchten. Für die eingefügte Karte können Sie kleinere Daten verwenden, um die Zustände zu zeichnen. Also habe ich benutzt map_data("state")
. Ich zeichnete eine Karte und wickelte sie ein ggplotGrob()
. Sie müssen ein grobes Objekt erstellen, um später eine eingefügte Karte zu erstellen. Schließlich verwenden Sie annotation_custom()
die eingefügte Karte und fügen sie der Hauptkarte hinzu.
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)