好吧,我做了一些挖掘,结果发现自然地球具有全世界湖泊的几何形状。ne_download(type = 'lakes')
.
library(ggplot2)
library(ggspatial)
library(sf)
library(rnaturalearth)
科幻世界
world <- rnaturalearth::ne_countries(scale = "medium",
returnclass = "sf")
北美作为 sf
n_america <- world %>%
filter(adm0_a3 %in% c("MEX", "CAN", "USA"))
湖泊作为SF
lakes <- rnaturalearth::ne_download(scale = 110,
type = 'lakes',
category = 'physical') %>%
sf::st_as_sf(lakes110, crs = 4269)
美国各州作为 sf
usa_states <- st_as_sf(maps::map("state",
fill=TRUE,
plot =FALSE),
crs = 4269)
或者,美国声明为 sf (所以你不需要{maps}
)
devtools::install_github("ropensci/rnaturalearthhires")
usa_states <- rnaturalearth::ne_states(country = "United States of America") %>%
sf::st_as_sf(crs = 4269)
使用 ggplot2 绘图
ggplot() +
geom_sf(data = n_america,
mapping = aes(geometry = geometry),
color = "black",
fill = "gray") +
geom_sf(data = usa_states,
mapping = aes(geometry = geom),
color = "black",
fill = "gray") +
geom_sf(data = lakes,
mapping = aes(geometry = geometry),
color = "black",
fill = "lightblue") +
coord_sf(ylim = c(23, 49),
xlim = c(-123, -69),
expand = TRUE) +
annotation_scale(location = "br",
width_hint = 0.25,
text_cex = 1) +
annotation_north_arrow(location = "br",
which_north = "true",
pad_x = unit(0.15, "in"),
pad_y = unit(0.3, "in"),
style = north_arrow_fancy_orienteering) +
labs(x = "Longitude",
y = "Latitude") +
theme_bw() +
theme(axis.text.x = element_text(size = 12, color = "black"),
axis.text.y = element_text(size = 12, color = "black"),
panel.grid.major = element_line(color = gray(0.5), linetype = "dashed", size = 0.5),
panel.background = element_rect(fill = "lightblue"))
随心所欲地改变海洋和湖泊的颜色。