3D 선 그래프 아래 다각형 채우기

Beginner

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

소개

이 튜토리얼에서는 Python 의 Matplotlib 라이브러리를 사용하여 3D 플롯에서 선 그래프 아래 공간을 채우는 다각형을 만드는 방법을 배웁니다. 다각형은 반투명하게 표시되어 일종의 '들쭉날쭉한 스테인드 글라스' 효과를 냅니다.

VM 팁

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

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

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

필요한 라이브러리 가져오기

필요한 라이브러리를 가져오는 것으로 시작합니다.

import math
import matplotlib.pyplot as plt
import numpy as np
from matplotlib.collections import PolyCollection

그래프 아래 다각형 함수 정의

다음으로, (x, y) 선 그래프 아래 공간을 채우는 다각형을 정의하는 정점 목록을 구성하는 함수 polygon_under_graph(x, y)를 정의합니다. 이 함수는 x 가 오름차순이라고 가정합니다.

def polygon_under_graph(x, y):
    """
    Construct the vertex list which defines the polygon filling the space under
    the (x, y) line graph. This assumes x is in ascending order.
    """
    return [(x[0], 0.), *zip(x, y), (x[-1], 0.)]

3D 플롯 생성

이제 Matplotlib 을 사용하여 3D 플롯을 생성합니다.

ax = plt.figure().add_subplot(projection='3d')

x 및 lambda 배열 정의

linspacerange 함수를 사용하여 x 및 lambda 배열을 각각 정의합니다.

x = np.linspace(0., 10., 31)
lambdas = range(1, 9)

정점 및 면 색상 계산

Matplotlib 의 vectorizecolormaps 함수를 사용하여 정점 (vertices) 및 면 색상 (facecolors) 을 계산합니다.

## verts[i] 는 다각형 i 를 정의하는 (x, y) 쌍의 목록입니다.
gamma = np.vectorize(math.gamma)
verts = [polygon_under_graph(x, l**x * np.exp(-l) / gamma(x + 1))
         for l in lambdas]
facecolors = plt.colormaps['viridis_r'](np.linspace(0, 1, len(verts)))

다각형 생성 및 플롯에 추가

Matplotlib 의 PolyCollection 함수를 사용하여 다각형을 생성하고 플롯에 추가합니다.

poly = PolyCollection(verts, facecolors=facecolors, alpha=.7)
ax.add_collection3d(poly, zs=lambdas, zdir='y')

플롯 제한 및 레이블 설정

마지막으로, set 함수를 사용하여 플롯 제한 (plot limits) 및 레이블 (labels) 을 설정합니다.

ax.set(xlim=(0, 10), ylim=(1, 9), zlim=(0, 0.35),
       xlabel='x', ylabel=r'$\lambda$', zlabel='probability')

플롯 표시

show 함수를 사용하여 플롯을 표시합니다.

plt.show()

요약

이 튜토리얼에서는 Python 의 Matplotlib 라이브러리를 사용하여 3D 플롯에서 선 그래프 아래 공간을 채우는 다각형을 만드는 방법을 배웠습니다. PolyCollection 함수를 사용하여 다각형을 만들고, set 함수를 사용하여 플롯 제한 (plot limits) 및 레이블 (labels) 을 설정했습니다.