Easiest
# https://forestgeo.github.io/fgeo.map/
library(fgeo.map)
# Load your own elevation data
elevation <- CTFSElev_mpala
# You can use the elevation data in the elevation list directly
str(elevation)
#> List of 4
#> $ col :'data.frame': 48581 obs. of 3 variables:
#> ..$ x : num [1:48581] 0 0 0 0 0 0 0 0 0 0 ...
#> ..$ y : num [1:48581] 0 5 10 15 20 25 30 35 40 45 ...
#> ..$ elev: num [1:48581] 1791 1791 1791 1791 1791 ...
#> $ xdim: num 2400
#> $ ydim: num 500
#> $ mat : num [1:101, 1:481] 1791 1791 1791 1791 1791 ...
map_elev(elevation)

# Also, you can extract the elevation dataframe and use that
elev <- elevation$col
map_elev(elev)

# You have a number of options you can tweak
map_elev(elev,
# Or choose colors by code from http://bit.ly/2rJgQba
low = "grey", high = "black",
# How many lines, and how thick
bins = 100, contour_size = 0.5,
# Hide elevation numbers from inside the plot
label_elev = FALSE,
# Keep the "level" legend
hide_legend_color = FALSE
)

More flexible
# http://ggplot2.tidyverse.org/reference/
library(ggplot2)
ggplot(elev, aes(x = x, y = y, z = elev)) +
geom_raster(aes(fill = elev)) +
geom_contour(color = "white", bins = 100) +
scale_fill_gradient(low = "grey", high = "black") +
coord_equal() +
theme_bw()
