Gráfico de densidade Matplotlib

Suraj Joshi 30 janeiro 2023
  1. Gere o gráfico de densidade usando o método gaussian_kde() do módulo scipy.stats
  2. Gerar o Lote de Densidade utilizando o kdeplot() Método a partir do pacote seaborn
  3. Gerar o gráfico de densidade utilizando o distplot() método a partir do pacote seaborn
  4. Defina kind='density' no método pandas.DataFrame.plot()para gerar o gráfico de densidade
Gráfico de densidade Matplotlib

Para gerar um gráfico de densidade utilizando Python, primeiro estimamos a função de densidade a partir dos dados dados fornecidos utilizando o método gaussian_kde() do módulo scipy.stats. Traçamos então a função de densidade para gerar o gráfico de densidade. Alternativamente, também podemos utilizar kdeplot() do pacote seaborn ou definir kind='density' em pandas.DataFrame.plot() método para gerar o gráfico de densidade.

Gere o gráfico de densidade usando o método gaussian_kde() do módulo scipy.stats

import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import kde

data = [2, 3, 3, 4, 2, 1, 5, 6, 4, 3, 3, 3, 6, 4, 5, 4, 3, 2]
density = kde.gaussian_kde(data)
x = np.linspace(-2, 10, 300)
y = density(x)

plt.plot(x, y)
plt.title("Density Plot of the data")
plt.show()

Resultado:

Gerar o gráfico de densidade usando o método gaussiano_kde

Aqui, primeiro estimamos a função de densidade para os dados fornecidos utilizando o método gaussian_kde(). Em seguida, traçamos a função para valores que vão de -2 a 10, utilizando o método plot().

O gráfico de densidade gerado não é suficientemente preciso porque a função gaussian_kde define a largura de banda automaticamente. Para definir a largura de banda, podemos utilizar a função covariance_factor da classe gaussian_kde. Chamamos então o método _compute_covariance para que todos os factores sejam calculados correctamente para gerar o gráfico preciso.

import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import kde

data = [2, 3, 3, 4, 2, 1, 5, 6, 4, 3, 3, 3, 6, 4, 5, 4, 3, 2]
prob_density = kde.gaussian_kde(data)
prob_density.covariance_factor = lambda: 0.25
prob_density._compute_covariance()

x = np.linspace(-2, 10, 300)
y = prob_density(x)

plt.plot(x, y)
plt.title("Density Plot of the data")
plt.show()

Resultado:

Gerar gráfico de densidade mais preciso utilizando o método gaussiano_kde

Gerar o Lote de Densidade utilizando o kdeplot() Método a partir do pacote seaborn

import matplotlib.pyplot as plt
import seaborn as sns

data = [2, 3, 3, 4, 2, 1, 5, 6, 4, 3, 3, 3, 6, 4, 5, 4, 3, 2]
sns.kdeplot(data, bw=0.25)
plt.show()

Resultado:

Gerar a parcela de densidade usando o método kdeplot

Desta forma, podemos gerar o gráfico de densidade simplesmente passando os dados para o método kdeplot().

Gerar o gráfico de densidade utilizando o distplot() método a partir do pacote seaborn

Podemos também utilizar o método distplot()do pacote seaborn e definir hist=False para gerar o gráfico de densidade.

import matplotlib.pyplot as plt
import seaborn as sns

data = [2, 3, 3, 4, 2, 1, 5, 6, 4, 3, 3, 3, 6, 4, 5, 4, 3, 2]
sns.distplot(data, hist=False)
plt.show()

Resultado:

Gerar o gráfico de densidade utilizando o método distplot

Defina kind='density' no método pandas.DataFrame.plot()para gerar o gráfico de densidade

import pandas as pd
import matplotlib.pyplot as plt

data = [2, 3, 3, 4, 2, 1, 5, 6, 4, 3, 3, 3, 6, 4, 5, 4, 3, 2]
df = pd.DataFrame(data)
df.plot(kind="density")
plt.show()

Resultado:

Definir kind=densidade em pandas.DataFrame.plot para gerar o gráfico de densidade

Suraj Joshi avatar Suraj Joshi avatar

Suraj Joshi is a backend software engineer at Matrice.ai.

LinkedIn