Sankey 클래스 #

세 가지 기본 다이어그램을 생성하여 Sankey 클래스를 시연합니다.

import matplotlib.pyplot as plt

from matplotlib.sankey import Sankey

예 1 -- 대부분 기본값

이는 Sankey.add() 메서드를 암시적으로 호출하고 finish()를 클래스 호출에 추가하여 간단한 다이어그램을 만드는 방법을 보여줍니다.

Sankey(flows=[0.25, 0.15, 0.60, -0.20, -0.15, -0.05, -0.50, -0.10],
       labels=['', '', '', 'First', 'Second', 'Third', 'Fourth', 'Fifth'],
       orientations=[-1, 1, 0, 1, 1, 1, 0, -1]).finish()
plt.title("The default settings produce a diagram like this.")
기본 설정은 다음과 같은 다이어그램을 생성합니다.
Text(0.5, 1.0, 'The default settings produce a diagram like this.')

알아채다:

  1. 축은 Sankey()가 인스턴스화될 때 제공되지 않았으므로 자동으로 생성되었습니다.

  2. 데이터가 이미 정규화되었으므로 스케일 인수가 필요하지 않았습니다.

  3. 기본적으로 경로 길이는 정렬됩니다.

예 2

이것은 다음을 보여줍니다.

  1. 하나의 경로를 다른 경로보다 길게 설정

  2. 다이어그램 중간에 레이블 배치

  3. 스케일 인수를 사용하여 흐름을 정규화

  4. PathPatch()에 암시적으로 키워드 인수 전달

  5. 화살촉의 각도 변경

  6. 경로 끝과 해당 레이블 사이의 오프셋 변경

  7. 경로 레이블 및 관련 단위의 숫자 서식 지정

  8. Figure가 생성된 후 패치 및 레이블의 모양 변경

fig = plt.figure()
ax = fig.add_subplot(1, 1, 1, xticks=[], yticks=[],
                     title="Flow Diagram of a Widget")
sankey = Sankey(ax=ax, scale=0.01, offset=0.2, head_angle=180,
                format='%.0f', unit='%')
sankey.add(flows=[25, 0, 60, -10, -20, -5, -15, -10, -40],
           labels=['', '', '', 'First', 'Second', 'Third', 'Fourth',
                   'Fifth', 'Hurray!'],
           orientations=[-1, 1, 0, 1, 1, 1, -1, -1, 0],
           pathlengths=[0.25, 0.25, 0.25, 0.25, 0.25, 0.6, 0.25, 0.25,
                        0.25],
           patchlabel="Widget\nA")  # Arguments to matplotlib.patches.PathPatch
diagrams = sankey.finish()
diagrams[0].texts[-1].set_color('r')
diagrams[0].text.set_fontweight('bold')
위젯의 흐름도

알아채다:

  1. 흐름의 합이 0이 아니므로 트렁크의 너비가 일정하지 않습니다. matplotlib 로깅 시스템은 이를 DEBUG 수준에서 기록합니다.

  2. 두 번째 흐름은 값이 0이므로 나타나지 않습니다. 다시 말하지만 이것은 DEBUG 수준에서 기록됩니다.

예 3

이것은 다음을 보여줍니다.

  1. 두 시스템 연결

  2. 수량 라벨 끄기

  3. 범례 추가

fig = plt.figure()
ax = fig.add_subplot(1, 1, 1, xticks=[], yticks=[], title="Two Systems")
flows = [0.25, 0.15, 0.60, -0.10, -0.05, -0.25, -0.15, -0.10, -0.35]
sankey = Sankey(ax=ax, unit=None)
sankey.add(flows=flows, label='one',
           orientations=[-1, 1, 0, 1, 1, 1, -1, -1, 0])
sankey.add(flows=[-0.25, 0.15, 0.1], label='two',
           orientations=[-1, -1, -1], prior=0, connect=(0, 0))
diagrams = sankey.finish()
diagrams[-1].patch.set_hatch('/')
plt.legend()
두 시스템
<matplotlib.legend.Legend object at 0x7f2cdd75b5e0>

하나의 연결만 지정되지만 다음과 같은 이유로 시스템이 회로를 형성합니다. (1) 경로의 길이가 정당화되고 (2) 흐름의 방향과 순서가 미러링됩니다.

참조

다음 함수, 메서드, 클래스 및 모듈의 사용이 이 예제에 표시됩니다.

스크립트의 총 실행 시간: (0분 1.040초)

Sphinx-Gallery에서 생성한 갤러리