How to plot cdf in matplotlib in Python?

How to plot cdf in matplotlib in Python?

As mentioned, cumsum from numpy works well. Make sure that your data is a proper PDF (ie. sums to one), otherwise the CDF wont end at unity as it should. Here is a minimal working example:

import numpy as np
from pylab import *

# Create some test data
dx = 0.01
X  = np.arange(-2, 2, dx)
Y  = exp(-X ** 2)

# Normalize the data to a proper PDF
Y /= (dx * Y).sum()

# Compute the CDF
CY = np.cumsum(Y * dx)

# Plot both
plot(X, Y)
plot(X, CY, r--)

show()

enter

I know Im late to the party. But, there is a simpler way if you just want the cdf for your plot and not for future calculations:

plt.hist(put_data_here, normed=True, cumulative=True, label=CDF,
         histtype=step, alpha=0.8, color=k)

As an example,

plt.hist(dataset, bins=bins, normed=True, cumulative=True, label=CDF DATA, 
         histtype=step, alpha=0.55, color=purple)
# bins and (lognormal / normal) datasets are pre-defined

EDIT: This example from the matplotlib docs may be more helpful.

How to plot cdf in matplotlib in Python?

The numpy function to compute cumulative sums cumsum can be useful here

In [1]: from numpy import cumsum
In [2]: cumsum([.2, .2, .2, .2, .2])
Out[2]: array([ 0.2,  0.4,  0.6,  0.8,  1. ])

Leave a Reply

Your email address will not be published. Required fields are marked *