Leaflet is a really good package for creating interactive maps. Here I’ve put together an example for visualising earthquake data from around Fiji.

library(leaflet)
library(htmltools)
data(quakes)
head(quakes)
##      lat   long depth mag stations
## 1 -20.42 181.62   562 4.8       41
## 2 -20.62 181.03   650 4.2       15
## 3 -26.00 184.10    42 5.4       43
## 4 -17.97 181.66   626 4.1       19
## 5 -20.42 181.96   649 4.0       11
## 6 -19.68 184.31   195 4.0       12
pal <- colorNumeric(
  palette = "Reds",
  domain = quakes$mag)


leaflet(quakes) %>%  
  addProviderTiles("CartoDB.Positron") %>%
  setView(mean(quakes$long), mean(quakes$lat), zoom = 4)%>% 
  addCircleMarkers(lng=quakes$long, lat=quakes$lat,radius = quakes$mag, 
                   color = ~pal(quakes$mag), stroke = FALSE, fillOpacity = 0.7) %>% 
   addLabelOnlyMarkers(~long, ~lat, label = as.character(paste("Magnitude: ",quakes$mag)))  #adding a pop up 

Lots of other basemaps available - http://leaflet-extras.github.io/leaflet-providers/preview/

leaflet(quakes) %>%  
  addProviderTiles("Stamen.Watercolor") %>%
  setView(mean(quakes$long), mean(quakes$lat), zoom = 4)%>% 
  addCircleMarkers(lng=quakes$long, lat=quakes$lat,radius = quakes$mag, 
                   color = ~pal(quakes$mag), stroke = FALSE, fillOpacity = 0.7) %>% 
   addLabelOnlyMarkers(~long, ~lat, label = as.character(paste("Magnitude: ",quakes$mag)))  #adding a pop up 
leaflet(quakes) %>%  
  addProviderTiles("Esri.WorldImagery") %>%
  setView(mean(quakes$long), mean(quakes$lat), zoom = 4)%>% 
  addCircleMarkers(lng=quakes$long, lat=quakes$lat,radius = quakes$mag, 
                   color = ~pal(quakes$mag), stroke = FALSE, fillOpacity = 0.7) %>% 
   addLabelOnlyMarkers(~long, ~lat, label = as.character(paste("Magnitude: ",quakes$mag)))  #adding a pop up