Grafico densità Matplotlib

Suraj Joshi 15 febbraio 2024
  1. Genera il diagramma di densità usando il metodo gaussian_kde() dal modulo scipy.stats
  2. Genera il grafico della densità usando il metodo kdeplot() dal pacchetto seaborn
  3. Genera il diagramma di densità usando il metodo distplot() dal pacchetto seaborn
  4. Imposta kind='density' nel metodo pandas.DataFrame.plot() per generare il grafico della densità
Grafico densità Matplotlib

Per generare un grafico di densità usando Python, inizialmente stimiamo la funzione di densità dai dati forniti usando il metodo gaussian_kde() dal modulo scipy.stats. Quindi tracciamo la funzione di densità per generare il grafico di densità. In alternativa, possiamo anche usare kdeplot() dal pacchetto seaborn o impostare kind='density' nel metodo pandas.DataFrame.plot() per generare il grafico della densità.

Genera il diagramma di densità usando il metodo gaussian_kde() dal modulo 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()

Produzione:

Genera il grafico della densità utilizzando il metodo gaussian_kde

Qui, per prima cosa stimiamo la funzione di densità per i dati forniti usando il metodo gaussian_kde(). Quindi, tracciamo la funzione per i valori che vanno da -2 a 10 usando il metodo plot().

Il grafico di densità generato non è abbastanza preciso perché la funzione gaussian_kde imposta automaticamente la larghezza di banda. Per impostare la larghezza di banda, possiamo usare la funzione covariance_factor della classe gaussian_kde. Chiamiamo quindi il metodo _compute_covariance in modo che tutti i fattori siano calcolati correttamente per generare il grafico 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()

Produzione:

Genera un grafico di densità più preciso utilizzando il metodo gaussian_kde

Genera il grafico della densità usando il metodo kdeplot() dal pacchetto 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()

Produzione:

Genera il grafico della densità utilizzando il metodo kdeplot

In questo modo, possiamo generare il grafico della densità semplicemente passando i dati nel metodo kdeplot().

Genera il diagramma di densità usando il metodo distplot() dal pacchetto seaborn

Possiamo anche usare il metodo distplot() dal pacchetto seaborn e impostare hist=False per generare il grafico della densità.

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()

Produzione:

Genera il grafico della densità utilizzando il metodo distplot

Imposta kind='density' nel metodo pandas.DataFrame.plot() per generare il grafico della densità

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()

Produzione:

Impostare kind=density in pandas.DataFrame.plot per generare il grafico della densità

Autore: Suraj Joshi
Suraj Joshi avatar Suraj Joshi avatar

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

LinkedIn