Matplotlib 밀도 플롯

Suraj Joshi 2023년1월30일
  1. scipy.stats 모듈에서gaussian_kde()메서드를 사용하여 밀도 플롯 생성
  2. seaborn 패키지에서kdeplot()메서드를 사용하여 밀도 플롯 생성
  3. seaborn 패키지에서distplot()메서드를 사용하여 밀도 플롯 생성
  4. pandas.DataFrame.plot()메서드에서kind='density'를 설정하여 밀도 플롯 생성
Matplotlib 밀도 플롯

Python을 사용하여 밀도 플롯을 생성하려면 먼저scipy.stats 모듈의gaussian_kde()메서드를 사용하여 주어진 데이터에서 밀도 함수를 추정합니다. 그런 다음 밀도 함수를 플로팅하여 밀도 플롯을 생성합니다. 또는seaborn 패키지의kdeplot()을 사용하거나pandas.DataFrame.plot()메서드에서kind='density'를 설정하여 밀도 플롯을 생성 할 수도 있습니다.

scipy.stats 모듈에서gaussian_kde()메서드를 사용하여 밀도 플롯 생성

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

출력:

gaussian_kde 방법을 사용하여 밀도 플롯 생성

여기에서 먼저gaussian_kde()메서드를 사용하여 주어진 데이터에 대한 밀도 함수를 추정합니다. 그런 다음plot()메서드를 사용하여-2에서10까지의 값에 대한 함수를 플로팅합니다.

생성 된 밀도 플롯은gaussian_kde 함수가 대역폭을 자동으로 설정하기 때문에 충분히 정확하지 않습니다. 대역폭을 설정하기 위해gaussian_kde 클래스의covariance_factor 함수를 사용할 수 있습니다. 그런 다음_compute_covariance 메서드를 호출하여 정확한 플롯을 생성하기 위해 모든 요인을 올바르게 계산합니다.

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

출력:

gaussian_kde 방법을 사용하여보다 정확한 밀도 플롯 생성

seaborn 패키지에서kdeplot()메서드를 사용하여 밀도 플롯 생성

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

출력:

kdeplot 방법을 사용하여 밀도 플롯 생성

이런 식으로 단순히 데이터를kdeplot()메서드에 전달하여 밀도 플롯을 생성 할 수 있습니다.

seaborn 패키지에서distplot()메서드를 사용하여 밀도 플롯 생성

또한seaborn 패키지의distplot()메서드를 사용하여hist=False를 설정하여 밀도 플롯을 생성 할 수 있습니다.

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

출력:

distplot 방법을 사용하여 밀도 플롯 생성

pandas.DataFrame.plot()메서드에서kind='density'를 설정하여 밀도 플롯 생성

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

출력:

pandas.DataFrame.plot에서 kind = density를 설정하여 밀도 플롯을 생성합니다

작가: Suraj Joshi
Suraj Joshi avatar Suraj Joshi avatar

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

LinkedIn

관련 문장 - Matplotlib Plot