Neste artigo, iremos criar um Gráfico Ogive. Um gráfico ogive também pode ser chamado de histogramas cumulativos; este gráfico é usado para determinar o número de valores que estão acima ou abaixo de um determinado valor em um conjunto de dados. O intervalo de aula é traçado no eixo x enquanto a frequência cumulativa é traçada no eixo y. Esses pontos são plotados no gráfico e unidos por linhas.

NumPy tem uma função chamada histograma() que representa graficamente a frequência dos dados em um intervalo de conjunto específico. A função de histograma retorna dois valores, o primeiro é a frequência e o qual é armazenado em valores e o segundo são os valores bin ou o intervalo entre os quais os números do conjunto de dados se encontram, é armazenado na variável base. 

Depois disso, calcularemos a soma cumulativa, o que pode ser feito facilmente com a função cumsum() , ela retorna a soma cumulativa ao longo de um eixo específico. Por fim, traçaremos o gráfico usando a função plot() e passando a base como valor do eixo xe cumsum como valor do eixo y. Podemos formatar o gráfico usando marcadores, cores e atributos lineares.

Exemplo 1: (Mais de gráfico Ogive)

O gráfico mais que ogiva mostra o número de valores maiores que os intervalos das classes. O gráfico resultante mostra o número de valores entre o intervalo de classe. Por exemplo, 0-10,10-20 e assim por diante. Vamos pegar um conjunto de dados e agora representaremos um gráfico de mais do que ogive- [22,87,5,43,56,73, 55,54,11,20,51,5,79,31,27].

Tabela representando intervalos, frequência e frequência cumulativa (menor que) -

Intervalo de classeFrequênciaFrequência acumulativa
     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

Abordagem:

  • Importe os módulos (matplotlib e numpy).
  • Calcule a frequência e a frequência cumulativa dos dados.
  • Faça um gráfico usando a função plot().
# 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')

Saída:

Exemplo 2: (Gráfico Menor que Ogive)

Neste exemplo, traçaremos o gráfico menor que Ogive, que mostrará os valores menores que dos intervalos de classe. Conjunto de dados: [44,27,5,2,43,56,77,53,89,54,11,23, 51,5,79,25,39]

Tabela representando intervalos, frequência e frequência cumulativa (mais de) -

Intervalo de classeFrequênciaFrequência acumulativa
     0-10     3               17
    10-20     1              16
    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

A abordagem é igual à anterior, apenas a soma cumulativa que calcularemos será revertida usando a função flipud() presente na biblioteca numpy.

# 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')

Saída:

 Atenção geek! Fortaleça suas bases com o Python Programming Foundation Course e aprenda o básico.