Crear un histograma acumulativo en Matplotlib

El histograma es una representación gráfica de los datos. Podemos representar cualquier tipo de datos numéricos en formato de histograma. En este artículo vamos a ver cómo crear un histograma acumulativo en Matplotlib

Frecuencia acumulativa: El análisis de frecuencia acumulativa es el análisis de la frecuencia de aparición de valores. Es el total de una frecuencia y todas las frecuencias hasta el momento en una distribución de frecuencia. 

Ejemplo:

X contiene [1,2,3,4,5], entonces la frecuencia acumulada para x es [1,3,6,10,15].

Explicación:

[1,1+2,1+2+3,1+2+3+4,1+2+3+4+5]

En Python, podemos generar un histograma con dataframe.hist y el histograma de frecuencia acumulada stats.cumfreq() .

Ejemplo 1:

Python3

# importing pyplot for getting graph
import matplotlib.pyplot as plt
  
# importing numpy for getting array
import numpy as np
  
# importing scientific python
from scipy import stats
  
# list of values
x = [10, 40, 20, 10, 30, 10, 56, 45]
  
res = stats.cumfreq(x, numbins=4,
                    defaultreallimits=(1.5, 5))
  
# generating random values
rng = np.random.RandomState(seed=12345)
  
# normalizing
samples = 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 size
fig = plt.figure(figsize=(10, 4))
  
# adding sub plots
ax1 = fig.add_subplot(1, 2, 1)
  
# adding sub plots
ax2 = fig.add_subplot(1, 2, 2)
  
# getting histogram using hist function
ax1.hist(samples, bins=25,
         color="green")
  
# setting up the title
ax1.set_title('Histogram')
  
# cumulative graph
ax2.bar(x, res.cumcount, width=4, color="blue")
  
# setting up the title
ax2.set_title('Cumulative histogram')
  
ax2.set_xlim([x.min(), x.max()])
  
# display hte figure(histogram)
plt.show()

Producción:

Ejemplo 2:

Python3

# importing numpy for getting array
import numpy as np
  
# importing scientific python
from scipy import stats
  
# list of values
x = [10, 40, 20, 10, 30, 10, 56, 45]
  
res = stats.cumfreq(x, numbins=4,
                    defaultreallimits=(1.5, 5))
  
# generating random values
rng = np.random.RandomState(seed=12345)
  
# normalizing
samples = 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()

Producción:

Publicación traducida automáticamente

Artículo escrito por sravankumar8128 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *