We can use the leaflet
package. See this link to learn the choice of base map (https://leaflet-extras.github.io/leaflet-providers/preview/). Here I used the "Esri.WorldStreetMap", which is the same as your example image shows.
library(leaflet)
leaflet() %>%
addProviderTiles(provider = "Esri.WorldStreetMap") %>%
setView(0, 0, zoom = 1)

In addition to leaflet
, here I further introduced two other packages to create interactive maps, which are tmap
and 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")

Update
Here is a way toa add text to each polygon using the tmap
package.
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")

If you have to use ggplot2
, you can prepare your into data as an sf
object and use geom_sf
and geom_sf_text
as follows.
library(sf)
library(tmap)
library(ggplot2)
# Gett the World sf data
data("World")
ggplot(World) +
geom_sf() +
geom_sf_text(aes(label = iso_a3))
