¿Cómo crear un gráfico de ojiva en Python?

En este artículo, crearemos un gráfico de ojiva. Un gráfico de ojiva también se puede llamar histograma acumulativo, este gráfico se usa para determinar la cantidad de valores que se encuentran por encima o por debajo de un valor particular en un conjunto de datos. El intervalo de clase se representa en el eje x, mientras que la frecuencia acumulada se representa en el eje y. Estos puntos se trazan en el gráfico y se unen mediante líneas.

NumPy tiene una función llamada histograma() que representa gráficamente la frecuencia de los datos en un rango de conjunto particular. La función de histograma devuelve dos valores, el primero es la frecuencia y se almacena en los valores y el segundo son los valores bin o el intervalo entre los cuales se encuentran los números del conjunto de datos, se almacena en la variable base. 

Después de esto, calcularemos la suma acumulativa que se puede hacer fácilmente con la función cumsum() , que devuelve la suma acumulativa a lo largo de un eje en particular. Por último, trazaremos el gráfico usando la función plot() y pasando base como valor del eje x y cumsum como valor del eje y. Podemos formatear el gráfico usando marcadores, color y atributos de líneas.

Ejemplo 1: (Gráfico de más de ojiva)

El gráfico de más de ojiva muestra el número de valores mayores que los intervalos de clase. El gráfico resultante muestra el número de valores entre el intervalo de clase. Por ejemplo, 0-10,10-20 y así sucesivamente. Tomemos un conjunto de datos, y ahora trazaremos su gráfico más que ojiva: [22,87,5,43,56,73, 55,54,11,20,51,5,79,31,27].

Tabla que representa los intervalos, la frecuencia y la frecuencia acumulada (menor que)-

Intervalo de clases Frecuencia Frecuencia acumulada
     0-10       2                  2
    10-20       1                  3
    20-30       3                  6
    30-40       1                  7
    40-50       1                  8
    50-60       4                 12
    60-70       0                 12
    70-80       2                 14
    80-90       1                 15

Acercarse:

  • Importe los módulos (matplotlib y numpy).
  • Calcule la frecuencia y la frecuencia acumulada de los datos.
  • Trazarlo usando la función plot().

Python3

# importing modules
import numpy as np
import matplotlib.pyplot as plt
  
# creating dataset
data = [22, 87, 5, 43, 56, 73, 55, 54, 11, 20, 51, 5, 79, 31, 27]
  
# creating class interval
classInterval = [0, 10, 20, 30, 40, 50, 60, 70, 80, 90]
  
# calculating frequency and class interval
values, base = np.histogram(data, bins=classInterval)
  
# calculating cumulative sum
cumsum = np.cumsum(values)
  
# plotting  the ogive graph
plt.plot(base[1:], cumsum, color='red', marker='o', linestyle='-')
  
# formatting
plt.title('Ogive Graph')
plt.xlabel('Marks in End-Term')
plt.ylabel('Cumulative Frequency')

Producción:

Ejemplo 2: (Gráfico menor que ojiva)

En este ejemplo, trazaremos un gráfico de ojiva menor que mostrará los valores menores de los intervalos de clase. Conjunto de datos:[44,27,5,2,43,56,77,53,89,54,11,23, 51,5,79,25,39]

Tabla que representa los intervalos, la frecuencia y la frecuencia acumulada (más de)-

Intervalo de clases Frecuencia Frecuencia acumulada
     0-10      3                17
    10-20      1               dieciséis
    20-30      3               14
    30-40      1               14
    40-50      2               10
    50-60      4                8
    60-70      0                7
    70-80      2                4
    80-90      1                3

El enfoque es el mismo que el anterior, solo que la suma acumulativa que calcularemos se invertirá utilizando la función flipud() presente en la biblioteca numpy.

Python3

# importing modules
import numpy as np
import matplotlib.pyplot as plt
  
# creating dataset
data = [44, 27, 5, 2, 43, 56, 77, 53, 89, 54, 11, 23, 51, 5, 79, 25, 39]
  
# creating class interval
classInterval = [0, 10, 20, 30, 40, 50, 60, 70, 80, 90]
  
# calculating frequency and intervals
values, base = np.histogram(data, bins=classInterval)
  
# calculating cumulative frequency
cumsum = np.cumsum(values)
  
# reversing cumulative frequency
res = np.flipud(cumsum)
  
# plotting ogive
plt.plot(base[1:], res, color='brown', marker='o', linestyle='-')
  
# formatting the graph
plt.title('Ogive Graph')
plt.xlabel('Marks in End-Term')
plt.ylabel('Cumulative Frequency')

Producción:

Publicación traducida automáticamente

Artículo escrito por adityaprasad1308 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 *