Как сделать карту страны (Мальдивы) в R с помощью ggplot2 - PullRequest
0 голосов
/ 07 августа 2020

Я пытаюсь получить карту Мальдив, похожую на ту, что видна на изображении. Однако я борюсь с xlim и ylim. Есть предложения?

library(cowplot)
library(googleway)
library(ggplot2) 
library(ggrepel) 
library(ggspatial) 
library(libwgeom)
library(sf) 
library(rnaturalearth) 
library(rnaturalearthdata)

theme_set(theme_bw())
ggplot(data = world) + 
  geom_sf() + 
  coord_sf(xlim = c(-102.15, -74.12), ylim = c(7.65, 33.97), expand = FALSE)

образец карты

1 Ответ

0 голосов
/ 07 августа 2020

Мальдивы не подходят для большой карты в этом формате, поскольку они настолько малы по отдельности и разбросаны. Фактически, если вы используете данные среднего разрешения из rnaturalearth, которые вы используете в настоящее время, вы увидите только один или два из сотен островов, и они будут отображаться как маленькие капли.

Вместо этого, вы можете получить карту с более высоким разрешением, например:

maldives <- ne_countries("large", country = "Maldives", returnclass = "sf")

theme_set(theme_bw())

ggplot(data = maldives) + 
  geom_sf() +
  coord_sf(xlim = c(70, 76))

enter image description here

You can show them in relation to the nearby countries of India and Sri Lanka if you just want to see their overall shape, extent and location:

maldives <- ne_countries("large", 
                         country = c("Maldives", "India", "Sri Lanka"), 
                         returnclass = "sf")

theme_set(theme_bw())

ggplot(data = maldives) + 
  geom_sf() +
  coord_sf(xlim = c(72, 82), ylim = c(-1, 15))

enter image description here

Another option is to colour the map to allow the islands to "pop"

ggplot(data = maldives) + 
  geom_sf(fill = "#55790A", color = "#90FF20") +
  coord_sf(xlim = c(72, 82), ylim = c(-1, 15)) +
  theme(panel.background = element_rect(fill = "#342255"),
        panel.grid = element_line(color = "#4f4f6f"))

enter image description here

Or stick to your original format but zoom in to near the capital:

ggplot(data = maldives) + 
  geom_sf() +
  coord_sf(xlim = c(72.5, 73.5), ylim = c(6, 7.2))

введите описание изображения здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...