r - 如何使五大湖与R中的海洋颜色相同?
问题描述
我是使用 R 制作地图的新手。我正在尝试制作北美地图(以美国为中心),并希望五大湖的颜色与海洋颜色相同。我当前的代码默认使它们与国家/州具有相同的颜色。关于如何改变颜色的任何想法?也许是不同的底图?
当前代码:
library(cowplot)
library(googleway)
library(ggplot2)
library(ggrepel)
library(ggspatial)
library(sf)
library(rnaturalearth)
library(rnaturalearthdata)
world <- ne_countries(scale = "medium", returnclass = "sf")
usa <- st_as_sf(maps::map("state", fill=TRUE, plot =FALSE),
crs = 4269)
ggplot(data = world) +
geom_sf(color = "black", fill = "gray") +
geom_sf(data = usa, color = "black", fill = "gray") +
xlab("Longitude") + ylab("Latitude") +
coord_sf(xlim = c(-123, -69), ylim = c(25, 49), expand = TRUE) +
annotation_scale(location = "br", width_hint = 0.5, 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) +
theme_bw() +
theme(plot.title = element_text(hjust = 0.5),
plot.subtitle = element_text(hjust = 0.5),
text = element_text(size = 16),
axis.text.x = element_text(size = 14, color = "black"),
axis.text.y = element_text(size = 14, color = "black"),
panel.grid.major = element_line(color = gray(0.5), linetype = "dashed", size = 0.5),
panel.background = element_rect(fill = "aliceblue"))
解决方案
好的,我做了一些挖掘,结果发现 rnaturalearth 具有整个世界湖泊的几何形状。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"))
旧金山的湖泊
lakes <- rnaturalearth::ne_download(scale = 110,
type = 'lakes',
category = 'physical') %>%
sf::st_as_sf(lakes110, crs = 4269)
US-States as 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"))
随心所欲地改变海洋和湖泊的颜色。
推荐阅读
- python - 使用 Rapberry Pi3 和相机的图像处理代码的“ZeroDivisionError:浮点除以零”
- msp430 - MSP432p401r:CTLW0->BRW 的可能输入有哪些?
- excel - VBA“预期语句结束”
- docker - jboss/openjdk18-rhel7:1.1 的 Dockerfile 或 docker 镜像
- firebase - 在非规范化 Firebase 结构中删除团队的用户
- audio - 紧急声音生成
- r - R中的网络流量平衡约束
- android - AndroidX 迁移创建数据绑定编译问题 - 如何解决?
- laravel - Laravel 5.7 foreach 不会显示任何内容,但已设置变量
- python - 字典不处理多个值