我想使用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)
问题:我想查看国家/地区的名称并查看像这样的地图:
感谢您的帮助!
答案 0 :(得分:1)
我们可以使用leaflet
软件包。请参阅此链接以了解基本地图(https://leaflet-extras.github.io/leaflet-providers/preview/)的选择。在这里,我使用了“ Esri.WorldStreetMap”,它与示例图像所示相同。
library(leaflet)
leaflet() %>%
addProviderTiles(provider = "Esri.WorldStreetMap") %>%
setView(0, 0, zoom = 1)
除了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")
# Plot world using mapview
mapview(World, map.types = "Esri.WorldStreetMap")
更新
这是一种使用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")
如果必须使用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))