Matplotlib 히스토그램 플로팅

Beginner

This tutorial is from open-source community. Access the source code

소개

이 랩에서는 Matplotlib 을 사용하여 히스토그램을 그리는 방법을 배웁니다. 데이터를 생성하고 간단한 히스토그램을 그리고, 히스토그램 색상을 업데이트하고, 2D 히스토그램을 그리고, 히스토그램을 사용자 정의합니다.

VM 팁

VM 시작이 완료되면 왼쪽 상단을 클릭하여 Notebook 탭으로 전환하여 실습을 위해 Jupyter Notebook에 액세스하십시오.

때로는 Jupyter Notebook 이 로딩을 완료하는 데 몇 초 정도 기다려야 할 수 있습니다. Jupyter Notebook 의 제한으로 인해 작업의 유효성 검사는 자동화될 수 없습니다.

학습 중에 문제가 발생하면 언제든지 Labby 에게 문의하십시오. 세션 후 피드백을 제공해주시면 즉시 문제를 해결해 드리겠습니다.

데이터 생성 및 간단한 히스토그램 그리기

1D 히스토그램을 생성하려면 숫자 벡터 하나만 있으면 됩니다. 2D 히스토그램의 경우 두 번째 벡터가 필요합니다. 아래에서 두 벡터를 모두 생성하고 각 벡터에 대한 히스토그램을 표시합니다.

import matplotlib.pyplot as plt
import numpy as np

## 재현성을 위해 고정된 시드로 난수 생성기를 생성합니다.
rng = np.random.default_rng(19680801)

N_points = 100000
n_bins = 20

## 두 개의 정규 분포를 생성합니다.
dist1 = rng.standard_normal(N_points)
dist2 = 0.4 * rng.standard_normal(N_points) + 5

fig, axs = plt.subplots(1, 2, sharey=True, tight_layout=True)

## *bins* 키워드 인수를 사용하여 bin 의 수를 설정할 수 있습니다.
axs[0].hist(dist1, bins=n_bins)
axs[1].hist(dist2, bins=n_bins)

plt.show()

히스토그램 색상 업데이트

히스토그램 메서드는 (다른 것들 중에서) patches 객체를 반환합니다. 이를 통해 그려진 객체의 속성에 액세스할 수 있습니다. 이를 사용하여 원하는 대로 히스토그램을 편집할 수 있습니다. 각 막대의 색상을 y 값에 따라 변경해 보겠습니다.

## N 은 각 bin 의 개수이고, bins 는 bin 의 하한입니다.
N, bins, patches = axs[0].hist(dist1, bins=n_bins)

## 높이에 따라 색상을 지정하지만, 임의의 스칼라를 사용할 수 있습니다.
fracs = N / N.max()

## colormap 의 전체 범위를 위해 데이터를 0..1 로 정규화해야 합니다.
norm = colors.Normalize(fracs.min(), fracs.max())

## 이제 객체를 반복하고 각 객체의 색상을 적절하게 설정합니다.
for thisfrac, thispatch in zip(fracs, patches):
    color = plt.cm.viridis(norm(thisfrac))
    thispatch.set_facecolor(color)

## 총 개수로 입력을 정규화할 수도 있습니다.
axs[1].hist(dist1, bins=n_bins, density=True)

## 이제 y 축을 형식화하여 백분율을 표시합니다.
axs[1].yaxis.set_major_formatter(PercentFormatter(xmax=1))

plt.show()

2D 히스토그램 그리기

2D 히스토그램을 그리려면 히스토그램의 각 축에 해당하는 동일한 길이의 두 개의 벡터만 있으면 됩니다.

fig, ax = plt.subplots(tight_layout=True)
hist = ax.hist2d(dist1, dist2)

plt.show()

히스토그램 사용자 정의

2D 히스토그램을 사용자 정의하는 것은 1D 경우와 유사하며, bin 크기 또는 색상 정규화와 같은 시각적 구성 요소를 제어할 수 있습니다.

fig, axs = plt.subplots(3, 1, figsize=(5, 15), sharex=True, sharey=True,
                        tight_layout=True)

## 각 축에서 bin 의 수를 늘릴 수 있습니다.
axs[0].hist2d(dist1, dist2, bins=40)

## 색상의 정규화도 정의할 수 있습니다.
axs[1].hist2d(dist1, dist2, bins=40, norm=colors.LogNorm())

## 각 축에 대해 사용자 정의 bin 수를 정의할 수도 있습니다.
axs[2].hist2d(dist1, dist2, bins=(80, 10), norm=colors.LogNorm())

plt.show()

요약

이 랩에서는 Matplotlib 을 사용하여 히스토그램을 그리는 방법을 배웠습니다. 데이터를 생성하고 간단한 히스토그램을 그리고, 히스토그램 색상을 업데이트하고, 2D 히스토그램을 그리고, 히스토그램을 사용자 정의했습니다. 이러한 기술을 사용하여 다양한 컨텍스트에서 데이터를 시각화하고 분석할 수 있습니다.