Как создать карту улиц мира с R? - PullRequest
0 голосов
/ 03 марта 2019

Я хочу создать карту улиц мира с помощью Rstudio.У меня есть этот код:

countries_map <-map_data("world")
world_map<-ggplot() + 
  geom_map(data = countries_map, 
           map = countries_map,aes(x = long, y = lat, map_id = region, group = group),
           fill = "light blue", color = "black", size = 0.1)

проблема: я хочу увидеть названия стран и карту, подобную этой:

enter image description here

Спасибо за помощь!

1 Ответ

0 голосов
/ 03 марта 2019

Мы можем использовать пакет leaflet.Смотрите эту ссылку, чтобы узнать, как выбрать базовую карту (https://leaflet -extras.github.io / leaflet-provider / preview / ).Здесь я использовал «Esri.WorldStreetMap», который аналогичен вашему примеру изображения.

library(leaflet)
leaflet() %>%
  addProviderTiles(provider = "Esri.WorldStreetMap") %>%
  setView(0, 0, zoom = 1)

enter image description here

В дополнение к leafletздесь я также представил два других пакета для создания интерактивных карт: tmap и mapview.

library(sf)
library(leaflet)
library(mapview)
library(tmap)

# Gett the World sf data
data("World")

# Turn on the view mode in tmap
tmap_mode("view")

# Plot World using tmap
tm_basemap("Esri.WorldStreetMap") +
tm_shape(World) +
  tm_polygons(col = "continent")

enter image description here

# Plot world using mapview
mapview(World, map.types = "Esri.WorldStreetMap")

enter image description here

Обновление

Вот способ добавить текст в каждый многоугольник, используя пакет tmap.

library(sf)
library(leaflet)
library(mapview)
library(tmap)

# Gett the World sf data
data("World")

# Turn on the view mode in tmap
tmap_mode("plot")

# Plot World using tmap
tm_basemap("Esri.WorldStreetMap") +
  tm_shape(World) +
  tm_polygons() +
  tm_text(text = "iso_a3")

enter image description here

Если вам нужно использовать ggplot2, вы можете подготовить данные в виде объекта sf и использовать geom_sf и geom_sf_text в качествеследует.

library(sf)
library(tmap)
library(ggplot2)

# Gett the World sf data
data("World")

ggplot(World) +
  geom_sf() +
  geom_sf_text(aes(label = iso_a3))

enter image description here

...