Como criar um gráfico Ogive em Python?
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 classe | Frequência | Frequê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 classe | Frequência | Frequê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.
As postagens do blog Acervo Lima te ajudaram? Nos ajude a manter o blog no ar!
Faça uma doação para manter o blog funcionando.
70% das doações são no valor de R$ 5,00...
Diógenes Lima da Silva