Matplotlib 선 스타일

Beginner

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

소개

Matplotlib 는 Python 을 위한 강력한 데이터 시각화 도구입니다. 이 도구의 기능 중 하나는 플롯에 대한 사용자 정의 선 스타일을 생성하는 능력입니다. 이 랩에서는 Matplotlib 에서 다양한 선 스타일을 생성하고 사용하는 방법을 배우겠습니다.

VM 팁

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

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

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

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

Matplotlib 를 사용하려면 먼저 라이브러리를 가져와야 합니다. 또한 플롯에 대한 샘플 데이터를 생성하기 위해 NumPy 라이브러리도 가져오겠습니다.

import matplotlib.pyplot as plt
import numpy as np

선 스타일 정의

Matplotlib 에서 선 스타일을 정의하는 방법에는 여러 가지가 있습니다. 'solid', 'dashed', 'dotted', 'dashdot'과 같은 미리 정의된 스타일을 사용할 수 있습니다. 또한 대시 튜플 (dash tuple) 을 사용하여 사용자 정의 선 스타일을 정의할 수도 있습니다.

linestyle_str = [
     ('solid', 'solid'),      ## Same as (0, ()) or '-'
     ('dotted', 'dotted'),    ## Same as (0, (1, 1)) or ':'
     ('dashed', 'dashed'),    ## Same as '--'
     ('dashdot', 'dashdot')]  ## Same as '-.'

linestyle_tuple = [
     ('loosely dotted',        (0, (1, 10))),
     ('dotted',                (0, (1, 1))),
     ('densely dotted',        (0, (1, 1))),
     ('long dash with offset', (5, (10, 3))),
     ('loosely dashed',        (0, (5, 10))),
     ('dashed',                (0, (5, 5))),
     ('densely dashed',        (0, (5, 1))),

     ('loosely dashdotted',    (0, (3, 10, 1, 10))),
     ('dashdotted',            (0, (3, 5, 1, 5))),
     ('densely dashdotted',    (0, (3, 1, 1, 1))),

     ('dashdotdotted',         (0, (3, 5, 1, 5, 1, 5))),
     ('loosely dashdotdotted', (0, (3, 10, 1, 10, 1, 10))),
     ('densely dashdotdotted', (0, (3, 1, 1, 1, 1, 1)))]

선 스타일을 플롯하는 함수 생성

다양한 선 스타일을 플롯하는 함수를 만들 수 있습니다. 이 함수는 축 객체 (axis object), 선 스타일 목록, 그리고 제목을 입력 매개변수로 받습니다.

def plot_linestyles(ax, linestyles, title):
    X, Y = np.linspace(0, 100, 10), np.zeros(10)
    yticklabels = []

    for i, (name, linestyle) in enumerate(linestyles):
        ax.plot(X, Y+i, linestyle=linestyle, linewidth=1.5, color='black')
        yticklabels.append(name)

    ax.set_title(title)
    ax.set(ylim=(-0.5, len(linestyles)-0.5),
           yticks=np.arange(len(linestyles)),
           yticklabels=yticklabels)
    ax.tick_params(left=False, bottom=False, labelbottom=False)
    ax.spines[:].set_visible(False)

    for i, (name, linestyle) in enumerate(linestyles):
        ax.annotate(repr(linestyle),
                    xy=(0.0, i), xycoords=ax.get_yaxis_transform(),
                    xytext=(-6, -12), textcoords='offset points',
                    color="blue", fontsize=8, ha="right", family="monospace")

플롯 생성

각 선 스타일 집합에 대해 plot_linestyles 함수를 호출하여 플롯을 생성할 수 있습니다.

fig, (ax0, ax1) = plt.subplots(2, 1, figsize=(10, 8), height_ratios=[1, 3])

plot_linestyles(ax0, linestyle_str[::-1], title='Named linestyles')
plot_linestyles(ax1, linestyle_tuple[::-1], title='Parametrized linestyles')

plt.tight_layout()
plt.show()

플롯 해석

결과 플롯은 다양한 선 스타일을 보여줍니다. 상단 플롯은 명명된 선 스타일을 보여주고, 하단 플롯은 매개변수화된 선 스타일을 보여줍니다. 오른쪽에 있는 주석은 각 선 스타일에 사용된 대시 튜플 (dash tuples) 을 보여줍니다.

요약

이 랩 (lab) 에서는 Matplotlib 에서 다양한 선 스타일을 생성하고 사용하는 방법을 배웠습니다. 미리 정의된 스타일과 대시 튜플 (dash tuples) 을 사용하여 선 스타일을 정의했습니다. 또한 다양한 선 스타일을 플롯하는 함수를 만들고 결과 플롯을 해석했습니다.