Matplotlib 로 채워진 다각형 만들기

Beginner

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

소개

이 랩에서는 Python 의 Matplotlib 을 사용하여 채워진 다각형을 만드는 방법을 배웁니다. Koch 설화 (Koch snowflake) 를 예시 다각형으로 사용합니다.

VM 팁

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

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

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

라이브러리 임포트

시작하기 전에 필요한 라이브러리를 임포트하겠습니다.

import matplotlib.pyplot as plt
import numpy as np

Koch 설화 함수 정의

다음으로, Koch 설화를 생성하는 함수를 정의합니다. 이 함수는 재귀 깊이 (recursion depth) 와 스케일 팩터 (scale factor) 의 두 가지 매개변수를 사용합니다.

def koch_snowflake(order, scale=10):
    """
    Koch 설화의 점 좌표를 나타내는 두 개의 리스트 x, y 를 반환합니다.

    매개변수
    ----------
    order : int
        재귀 깊이.
    scale : float
        설화의 크기 (기본 삼각형의 변 길이).
    """
    def _koch_snowflake_complex(order):
        if order == 0:
            ## initial triangle
            angles = np.array([0, 120, 240]) + 90
            return scale / np.sqrt(3) * np.exp(np.deg2rad(angles) * 1j)
        else:
            ZR = 0.5 - 0.5j * np.sqrt(3) / 3

            p1 = _koch_snowflake_complex(order - 1)  ## start points
            p2 = np.roll(p1, shift=-1)  ## end points
            dp = p2 - p1  ## connection vectors

            new_points = np.empty(len(p1) * 4, dtype=np.complex128)
            new_points[::4] = p1
            new_points[1::4] = p1 + dp / 3
            new_points[2::4] = p1 + dp * ZR
            new_points[3::4] = p1 + dp / 3 * 2
            return new_points

    points = _koch_snowflake_complex(order)
    x, y = points.real, points.imag
    return x, y

채워진 다각형 생성

이제 fill() 함수를 사용하여 채워진 다각형을 생성할 수 있습니다. Koch 설화 함수를 사용하여 다각형의 좌표를 생성합니다.

x, y = koch_snowflake(order=5)

plt.figure(figsize=(8, 8))
plt.axis('equal')
plt.fill(x, y)
plt.show()

다각형 사용자 정의

fill() 함수에서 키워드 인자 (keyword arguments) 를 사용하여 다각형의 색상과 선 너비를 사용자 정의할 수 있습니다.

x, y = koch_snowflake(order=2)

fig, (ax1, ax2, ax3) = plt.subplots(1, 3, figsize=(9, 3),
                                    subplot_kw={'aspect': 'equal'})
ax1.fill(x, y)
ax2.fill(x, y, facecolor='lightsalmon', edgecolor='orangered', linewidth=3)
ax3.fill(x, y, facecolor='none', edgecolor='purple', linewidth=3)

plt.show()

요약

이 랩에서는 Python 의 Matplotlib 을 사용하여 채워진 다각형을 만드는 방법을 배웠습니다. Koch 설화를 예시 다각형으로 사용하고, 다양한 색상과 선 너비로 다각형을 사용자 정의하는 방법을 시연했습니다.