Matplotlib Sankey 다이어그램 생성

Beginner

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

소개

이 랩에서는 Python Matplotlib 을 사용하여 matplotlib.sankey 모듈의 Sankey 클래스를 활용하여 긴 연결 체인을 만드는 방법을 배웁니다.

VM 팁

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

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

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

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

필요한 라이브러리와 모듈을 가져오는 것으로 시작합니다. matplotlib.pyplotmatplotlib.sankey를 사용할 것입니다.

import matplotlib.pyplot as plt
from matplotlib.sankey import Sankey

각 측면의 링크 수 정의

다음으로, 체인에서 각 측면의 링크 수를 정의합니다. 이 예제에서는 6 으로 설정합니다.

links_per_side = 6

side 함수 정의

이제 측면 체인을 생성하는 side 함수를 정의합니다.

def side(sankey, n=1):
    """Generate a side chain."""
    prior = len(sankey.diagrams)
    for i in range(0, 2*n, 2):
        sankey.add(flows=[1, -1], orientations=[-1, -1],
                   patchlabel=str(prior + i),
                   prior=prior + i - 1, connect=(1, 0), alpha=0.5)
        sankey.add(flows=[1, -1], orientations=[1, 1],
                   patchlabel=str(prior + i + 1),
                   prior=prior + i, connect=(1, 0), alpha=0.5)

corner 함수 정의

다음으로, 코너 링크를 생성하는 corner 함수를 정의합니다.

def corner(sankey):
    """Generate a corner link."""
    prior = len(sankey.diagrams)
    sankey.add(flows=[1, -1], orientations=[0, 1],
               patchlabel=str(prior), facecolor='k',
               prior=prior - 1, connect=(1, 0), alpha=0.5)

Figure 및 Axis 객체 생성

이제 plt.subplots()를 사용하여 figureaxis 객체를 생성합니다.

fig, ax = plt.subplots()

Sankey 객체 생성

다음으로, ax 객체를 사용하여 Sankey 객체를 생성하고 unitNone으로 설정합니다.

sankey = Sankey(ax=ax, unit=None)

첫 번째 다이어그램 추가

flows=[1, -1]orientations=[0, 1]을 사용하여 sankey.add()로 첫 번째 다이어그램을 추가합니다.

sankey.add(flows=[1, -1], orientations=[0, 1],
           patchlabel="0", facecolor='k',
           rotation=45)

사이드 체인 및 코너 링크 추가

이제 side()corner() 함수를 사용하여 사이드 체인과 코너 링크를 추가합니다.

side(sankey, n=links_per_side)
corner(sankey)
side(sankey, n=links_per_side)
corner(sankey)
side(sankey, n=links_per_side)
corner(sankey)
side(sankey, n=links_per_side)

Sankey 다이어그램 완성 및 표시

마지막으로, sankey.finish()를 사용하여 Sankey 다이어그램을 완성하고 plt.show()를 사용하여 표시합니다.

sankey.finish()
plt.show()

요약

이 랩에서는 Python Matplotlib 을 사용하여 matplotlib.sankey 모듈의 Sankey 클래스를 활용하여 긴 연결 체인을 만드는 방법을 배웠습니다. 사이드 체인과 코너 링크를 각각 생성하기 위해 sidecorner 함수를 정의했습니다. 또한 Sankey 객체를 사용하여 첫 번째 다이어그램, 사이드 체인 및 코너 링크를 추가하고 plt.show()를 사용하여 다이어그램을 표시했습니다.