Using a histogram is one solution but it involves binning the data. This is not necessary for plotting a CDF of empirical data. Let F(x)
be the count of how many entries are less than x
then it goes up by one, exactly where we see a measurement. Thus, if we sort our samples then at each point we increment the count by one (or the fraction by 1/N) and plot one against the other we will see the "exact" (i.e. un-binned) empirical CDF.
A following code sample demonstrates the method
import numpy as np
import matplotlib.pyplot as plt
N = 100
Z = np.random.normal(size = N)
# method 1
H,X1 = np.histogram( Z, bins = 10, normed = True )
dx = X1[1] - X1[0]
F1 = np.cumsum(H)*dx
#method 2
X2 = np.sort(Z)
F2 = np.array(range(N))/float(N)
plt.plot(X1[1:], F1)
plt.plot(X2, F2)
plt.show()
It outputs the following
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…