The concept of the empirical CDF (ECDF) of a sample is very simple. First, the value of the ECDF below the minimum observation is $0$ and its value above the maximum observation is $1.$
Second, sort the data from smallest to largest. If there are $n$ observations (all distinct), then the ECDF jumps up by $1/n$ at each observation. If there are ties, the jump is $d/n$ for $d$ values tied at the same value. 

In R, the expression `ecdf` does the work. (You might want to read the R documentation for `ecdf`.) For moderate and large sample sizes the ECDF is often a good approximation of the distribution of the population from which the data are randomly sampled (shown in red in the plots below).

Examples (in R):

    set.seed(813)
    x = runif(50, 0, 10);  plot(ecdf(x));  rug(x)
      curve(punif(x, 0, 10), add=T, col="red", n=10001)

[![enter image description here][1]][1]


    set.seed(2019)
    x = rpois(10, 3); plot(ecdf(x))
    curve(ppois(x, 3), add=T, col="red", n = 10001)

[![enter image description here][2]][2]

    set.seed(1066)
    x = rexp(5000, 1/10);  plot(ecdf(x))
    curve(pexp(x, 1/10), add-T, col="red")

[![enter image description here][3]][3]


_Note:_ Q-Q plots (with theoretical and sample quantiles) often amount to ECDF plots with scales suitably distorted so that the
population CDF if a straight line.

  [1]: https://i.sstatic.net/r0aC0.png
  [2]: https://i.sstatic.net/XRtJE.png
  [3]: https://i.sstatic.net/3yrs5.png