Create a cumulative histogram in Matplotlib - GeeksforGeeks

17 Dec, 2020
The histogram is a graphical representation of data. We can represent any kind of numeric data in histogram format. In this article, We are going to see how to create a cumulative histogram in Matplotlib
Cumulative frequency: Cumulative frequency analysis is the analysis of the frequency of occurrence of values. It is the total of a frequency and all frequencies so far in a frequency distribution. 
Example:
X contains [1,2,3,4,5] then the cumulative frequency for x is [1,3,6,10,15].
Explanation:
[1,1+2,1+2+3,1+2+3+4,1+2+3+4+5]
In Python, we can generate a histogram with dataframe.hist, and cumulative frequency stats.cumfreq() histogram.
Example 1:
Python3
# importing pyplot for getting graphimport matplotlib.pyplot as plt  # importing numpy for getting arrayimport numpy as np  # importing scientific pythonfrom scipy import stats  # list of valuesx = [10, 40, 20, 10, 30, 10, 56, 45]  res = stats.cumfreq(x, numbins=4,                    defaultreallimits=(1.5, 5))  # generating random valuesrng = np.random.RandomState(seed=12345)  # normalizingsamples = stats.norm.rvs(size=1000,                         random_state=rng)  res = stats.cumfreq(samples,                    numbins=25)  x = res.lowerlimit + np.linspace(0, res.binsize*res.cumcount.size,                                 res.cumcount.size)  # specifying figure sizefig = plt.figure(figsize=(10, 4))  # adding sub plotsax1 = fig.add_subplot(1, 2, 1)  # adding sub plotsax2 = fig.add_subplot(1, 2, 2)  # getting histogram using hist functionax1.hist(samples, bins=25,         color="green")  # setting up the titleax1.set_title('Histogram')  # cumulative graphax2.bar(x, res.cumcount, width=4, color="blue")  # setting up the titleax2.set_title('Cumulative histogram')  ax2.set_xlim([x.min(), x.max()])  # display hte figure(histogram)plt.show()
Output:
Example 2:
Python3
# importing numpy for getting arrayimport numpy as np  # importing scientific pythonfrom scipy import stats  # list of valuesx = [10, 40, 20, 10, 30, 10, 56, 45]  res = stats.cumfreq(x, numbins=4,                    defaultreallimits=(1.5, 5))  # generating random valuesrng = np.random.RandomState(seed=12345)  # normalizingsamples = stats.norm.rvs(size=1000,                         random_state=rng)  res = stats.cumfreq(samples,                    numbins=25)  x = res.lowerlimit + np.linspace(0, res.binsize*res.cumcount.size,                                 res.cumcount.size)  fig = plt.figure(figsize=(10, 4))  ax1 = fig.add_subplot(1, 2, 1)ax2 = fig.add_subplot(1, 2, 2)  ax1.hist(samples, bins=25, color="green")  ax1.set_title('Histogram')ax2.bar(x, x, width=2, color="blue")  ax2.set_title('Cumulative histogram')ax2.set_xlim([x.min(), x.max()])  plt.show()
Output:
Picked
Python-matplotlib
Python
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Read JSON file using Python
Adding new column to existing DataFrame in Pandas
Python map() function
How to get column names in Pandas dataframe
Python Dictionary
Taking input in Python
How to Install PIP on Windows ?
Read a file line by line in Python
Enumerate() in Python
Different ways to create Pandas Dataframe