library(pacman)
p_load(tidyverse, nasaweather)
atmos      # Atmospheric data.
borders <- ungroup(borders)  # Country borders
elev       # Elevation.
glaciers # Glacier locations
storms   # Storm tracks data
p <- storms %>% ggplot(aes(y = wind, x = pressure, color = type)) +
  geom_point(alpha = 0.3) 
p

p + geom_smooth()

All storms

Determine the part of the map to plot the storm paths on. Compute the minimum and maximum values of the latitude and longitude.

bbox <- storms %>%
  select(lat, long) %>%
  map_df(range)          # using the purrr R package
bbox
base_map <- map_data("world") %>% ggplot( aes(x = long, y = lat)) +
  geom_path(aes(group = group), color = "black", size = 0.1) +
  lims(x = bbox$long, y = bbox$lat)
storms <- storms %>% 
  unite("the_date", c(year, month, day), sep="-", remove="FALSE") %>%
  mutate(the_date = lubridate::ymd(the_date))
base_map + geom_path(data = storms, aes(color = name, alpha = 0.01, size = wind),
                     arrow = arrow(length = unit(0.005, "inches"))) +
  facet_wrap(~year) +
  theme(legend.position = "none")

Only Tropical Storms

base_map <- map_data("world") %>% ggplot(aes(x = long, y = lat)) +
  geom_path(aes(group = group), color = "black", size = 0.1) +
  lims(x = bbox$long, y = bbox$lat)
base_map

storms2 <- storms %>% filter(type == "Tropical Storm") 
base_map + geom_path(data = storms2, aes(color = name, alpha = 0.01, size = wind), arrow = arrow(length = unit(0.005, "inches"))) +
  facet_wrap(~year) +
  theme(legend.position = "none")

Some futher maps

library(maps)
state <- map_data("state")
county <- map_data("county")
usa <- map_data("usa")
world <- map_data("world")

states

state
gg <- ggplot()
gg <- gg + geom_map(data=state, map=state,
                     aes(long, lat, map_id=region),
                     color="#2b2b2b", fill=NA, size=0.15)
Ignoring unknown aesthetics: x, y
gg

gg <- ggplot()
gg <- gg + geom_map(data=county, map=county,
                     aes(long, lat, map_id=region),
                     color="#2b2b2b", fill=NA, size=0.15)
Ignoring unknown aesthetics: x, y
gg

gg <- ggplot()
gg <- gg + geom_map(data=state, map=state,
                     aes(long, lat, map_id=region),
                     color="#2b2b2b", fill=NA, size=0.15)
Ignoring unknown aesthetics: x, y
gg

gg <- ggplot()
gg <- gg + geom_map(data=usa, map=usa,
                     aes(long, lat, map_id=region),
                     color="#2b2b2b", fill=NA, size=0.15)
Ignoring unknown aesthetics: x, y
gg

ggplot() + borders("county", c("washington", "california","texas"))

LS0tCnRpdGxlOiAiTWFwcyIKb3V0cHV0OgogIHdvcmRfZG9jdW1lbnQ6IGRlZmF1bHQKICBodG1sX25vdGVib29rOiBkZWZhdWx0CiAgcGRmX2RvY3VtZW50OiBkZWZhdWx0Ci0tLQoKCmBgYHtyfQpsaWJyYXJ5KHBhY21hbikKCnBfbG9hZCh0aWR5dmVyc2UsIG5hc2F3ZWF0aGVyKQoKYXRtb3MJICAgICAgICAgICAgICAgICAgICAgICAjIEF0bW9zcGhlcmljIGRhdGEuCmJvcmRlcnMgPC0gdW5ncm91cChib3JkZXJzKQkgIyBDb3VudHJ5IGJvcmRlcnMsIHVuZ3JvdXAgZml4ZXMgYSBwcm9ibGVtIHdpdGgga25pdHRpbmcuCmVsZXYJICAgICAgICAgICAgICAgICAgICAgICAjIEVsZXZhdGlvbi4KZ2xhY2llcnMgICAgICAgICAgICAgICAgICAgICAjIEdsYWNpZXIgbG9jYXRpb25zCnN0b3JtcwkgICAgICAgICAgICAgICAgICAgICAjIFN0b3JtIHRyYWNrcyBkYXRhCgpgYGAKCgpgYGB7cn0KcCA8LSBzdG9ybXMgJT4lIGdncGxvdChhZXMoeSA9IHdpbmQsIHggPSBwcmVzc3VyZSwgY29sb3IgPSB0eXBlKSkgKwogIGdlb21fcG9pbnQoYWxwaGEgPSAwLjMpIAoKcAoKcCArIGdlb21fc21vb3RoKCkKYGBgCgoKQWxsIHN0b3JtcwoKRGV0ZXJtaW5lIHRoZSBwYXJ0IG9mIHRoZSBtYXAgdG8gcGxvdCB0aGUgc3Rvcm0gcGF0aHMgb24uICBDb21wdXRlIHRoZSBtaW5pbXVtIGFuZCBtYXhpbXVtIHZhbHVlcyBvZiB0aGUgbGF0aXR1ZGUgYW5kIGxvbmdpdHVkZS4KCmBgYHtyfQpiYm94IDwtIHN0b3JtcyAlPiUKICBzZWxlY3QobGF0LCBsb25nKSAlPiUKICBtYXBfZGYocmFuZ2UpICAgICAgICAgICMgdXNpbmcgdGhlIHB1cnJyIFIgcGFja2FnZQoKYmJveApgYGAKCmBgYHtyfQpiYXNlX21hcCA8LSBtYXBfZGF0YSgid29ybGQiKSAlPiUgZ2dwbG90KCBhZXMoeCA9IGxvbmcsIHkgPSBsYXQpKSArCiAgZ2VvbV9wYXRoKGFlcyhncm91cCA9IGdyb3VwKSwgY29sb3IgPSAiYmxhY2siLCBzaXplID0gMC4xKSArCiAgbGltcyh4ID0gYmJveCRsb25nLCB5ID0gYmJveCRsYXQpCgpzdG9ybXMgPC0gc3Rvcm1zICU+JSAKICB1bml0ZSgidGhlX2RhdGUiLCBjKHllYXIsIG1vbnRoLCBkYXkpLCBzZXA9Ii0iLCByZW1vdmU9IkZBTFNFIikgJT4lCiAgbXV0YXRlKHRoZV9kYXRlID0gbHVicmlkYXRlOjp5bWQodGhlX2RhdGUpKQoKYmFzZV9tYXAgKyBnZW9tX3BhdGgoZGF0YSA9IHN0b3JtcywgYWVzKGNvbG9yID0gbmFtZSwgYWxwaGEgPSAwLjAxLCBzaXplID0gd2luZCksCiAgICAgICAgICAgICAgICAgICAgIGFycm93ID0gYXJyb3cobGVuZ3RoID0gdW5pdCgwLjAwNSwgImluY2hlcyIpKSkgKwogIGZhY2V0X3dyYXAofnllYXIpICsKICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAibm9uZSIpCgpgYGAKCk9ubHkgVHJvcGljYWwgU3Rvcm1zCgpgYGB7cn0KYmFzZV9tYXAgPC0gbWFwX2RhdGEoIndvcmxkIikgJT4lIGdncGxvdChhZXMoeCA9IGxvbmcsIHkgPSBsYXQpKSArCiAgZ2VvbV9wYXRoKGFlcyhncm91cCA9IGdyb3VwKSwgY29sb3IgPSAiYmxhY2siLCBzaXplID0gMC4xKSArCiAgbGltcyh4ID0gYmJveCRsb25nLCB5ID0gYmJveCRsYXQpCgpiYXNlX21hcAoKc3Rvcm1zMiA8LSBzdG9ybXMgJT4lIGZpbHRlcih0eXBlID09ICJUcm9waWNhbCBTdG9ybSIpIAoKYmFzZV9tYXAgKyBnZW9tX3BhdGgoZGF0YSA9IHN0b3JtczIsIGFlcyhjb2xvciA9IG5hbWUsIGFscGhhID0gMC4wMSwgc2l6ZSA9IHdpbmQpLCBhcnJvdyA9IGFycm93KGxlbmd0aCA9IHVuaXQoMC4wMDUsICJpbmNoZXMiKSkpICsKICBmYWNldF93cmFwKH55ZWFyKSArCiAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiKQoKYGBgCgoKU29tZSBmdXRoZXIgbWFwcwoKYGBge3J9CmxpYnJhcnkobWFwcykKCnN0YXRlIDwtIG1hcF9kYXRhKCJzdGF0ZSIpCmNvdW50eSA8LSBtYXBfZGF0YSgiY291bnR5IikKdXNhIDwtIG1hcF9kYXRhKCJ1c2EiKQp3b3JsZCA8LSBtYXBfZGF0YSgid29ybGQiKQpgYGAKCnN0YXRlcwoKYGBge3J9CnN0YXRlCmBgYAoKYGBge3J9CmdnIDwtIGdncGxvdCgpCmdnIDwtIGdnICsgZ2VvbV9tYXAoZGF0YT1zdGF0ZSwgbWFwPXN0YXRlLAogICAgICAgICAgICAgICAgICAgICBhZXMobG9uZywgbGF0LCBtYXBfaWQ9cmVnaW9uKSwKICAgICAgICAgICAgICAgICAgICAgY29sb3I9IiMyYjJiMmIiLCBmaWxsPU5BLCBzaXplPTAuMTUpCmdnCmBgYAoKCmBgYHtyfQpnZyA8LSBnZ3Bsb3QoKQpnZyA8LSBnZyArIGdlb21fbWFwKGRhdGE9Y291bnR5LCBtYXA9Y291bnR5LAogICAgICAgICAgICAgICAgICAgICBhZXMobG9uZywgbGF0LCBtYXBfaWQ9cmVnaW9uKSwKICAgICAgICAgICAgICAgICAgICAgY29sb3I9IiMyYjJiMmIiLCBmaWxsPU5BLCBzaXplPTAuMTUpCmdnCgpnZyA8LSBnZ3Bsb3QoKQpnZyA8LSBnZyArIGdlb21fbWFwKGRhdGE9c3RhdGUsIG1hcD1zdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgYWVzKGxvbmcsIGxhdCwgbWFwX2lkPXJlZ2lvbiksCiAgICAgICAgICAgICAgICAgICAgIGNvbG9yPSIjMmIyYjJiIiwgZmlsbD1OQSwgc2l6ZT0wLjE1KQpnZwoKZ2cgPC0gZ2dwbG90KCkKZ2cgPC0gZ2cgKyBnZW9tX21hcChkYXRhPXVzYSwgbWFwPXVzYSwKICAgICAgICAgICAgICAgICAgICAgYWVzKGxvbmcsIGxhdCwgbWFwX2lkPXJlZ2lvbiksCiAgICAgICAgICAgICAgICAgICAgIGNvbG9yPSIjMmIyYjJiIiwgZmlsbD1OQSwgc2l6ZT0wLjE1KQpnZwpgYGAKCmBgYHtyfQpnZ3Bsb3QoKSArIGJvcmRlcnMoImNvdW50eSIsIGMoIndhc2hpbmd0b24iLCAiY2FsaWZvcm5pYSIsInRleGFzIikpCmBgYAo=