Matplotlib 플롯 제목 위치 지정

Beginner

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

소개

이 랩에서는 Matplotlib 으로 생성된 플롯에서 제목을 배치하는 방법을 배우게 됩니다. 플롯 제목은 시각화가 어떤 정보를 전달하는지 시청자가 이해하는 데 도움이 됩니다. Matplotlib 은 이러한 제목을 배치하기 위한 여러 옵션을 제공합니다 - 가운데 정렬 (기본값), 왼쪽 정렬, 오른쪽 정렬 또는 사용자 정의 수직 위치.

이 랩을 마치면 다음을 수행할 수 있습니다.

  • 가운데 정렬된 제목이 있는 기본 플롯 생성
  • 플롯의 왼쪽 또는 오른쪽에 제목 배치
  • 사용자 정의 위치에 제목이 있는 플롯 생성
  • 제목 위치를 조정하기 위한 다양한 방법 사용

기본 제목 위치를 사용한 기본 플로팅

이 단계에서는 간단한 선 플롯을 생성하고 Matplotlib 의 기본 위치인 가운데 정렬된 제목을 추가합니다.

Jupyter Notebook 생성

VM 시작이 완료되면 왼쪽 상단 모서리를 클릭하여 Notebook 탭으로 전환하여 Jupyter Notebook 에 액세스합니다.

click-notebook

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

랩 중에 문제가 발생하면 Labby 에게 도움을 요청하십시오. 세션 후 피드백을 제공하여 문제를 신속하게 해결할 수 있도록 해주세요.

Matplotlib 가져오기

이제 Matplotlib 라이브러리를 가져오는 것으로 시작해 보겠습니다. 노트북의 첫 번째 셀에 다음 코드를 입력하고 Shift+Enter 를 눌러 실행합니다.

import matplotlib.pyplot as plt

이 코드는 Matplotlib 에서 pyplot 모듈을 가져와서 plt라는 별칭을 할당합니다. 이는 일반적인 관례입니다.

간단한 플롯 생성

다음으로, 기본 선 플롯을 생성해 보겠습니다. 새 셀에 다음 코드를 입력하고 실행합니다.

plt.figure(figsize=(8, 5))  ## 특정 크기의 figure 생성
plt.plot(range(10))         ## 0 부터 9 까지의 숫자 플롯
plt.grid(True)              ## 가독성을 위해 그리드 추가
plt.show()                  ## 플롯 표시

출력에 0 부터 9 까지의 값이 표시된 간단한 선 플롯이 표시됩니다.

line-plot

기본 (가운데 정렬) 제목 추가

이제 플롯에 제목을 추가해 보겠습니다. 제목의 기본 위치는 플롯 상단의 가운데입니다. 새 셀에 다음 코드를 입력합니다.

plt.figure(figsize=(8, 5))
plt.plot(range(10))
plt.grid(True)
plt.title('My First Matplotlib Plot')  ## 가운데 정렬된 제목 추가
plt.show()
line-plot-with-title

셀을 실행하면 상단에 가운데 정렬된 제목이 있는 플롯이 표시됩니다.

추가 매개변수 없이 title() 함수를 사용하면 제목이 가운데에 배치됩니다. 이것이 기본 위치입니다.

왼쪽 및 오른쪽 제목 위치 지정

Matplotlib 을 사용하면 loc 매개변수를 사용하여 제목을 플롯의 왼쪽 또는 오른쪽에 배치할 수 있습니다. 이 단계에서는 제목을 플롯의 왼쪽 및 오른쪽에 정렬하는 방법을 배우게 됩니다.

왼쪽 정렬 제목이 있는 플롯 생성

제목을 왼쪽에 배치한 플롯을 생성해 보겠습니다. 새 셀에 다음 코드를 입력합니다.

plt.figure(figsize=(8, 5))
plt.plot(range(10))
plt.grid(True)
plt.title('Left-Aligned Title', loc='left')  ## 제목을 왼쪽에 배치
plt.show()
left-aligned-title

셀을 실행합니다. 이제 제목이 가운데 정렬 대신 플롯의 왼쪽 가장자리에 정렬되어 표시되는 것을 확인하세요.

title() 함수의 loc 매개변수는 제목의 수평 위치를 결정합니다. loc='left'로 설정하면 Matplotlib 에 제목을 플롯의 왼쪽에 배치하도록 지시하는 것입니다.

오른쪽 정렬 제목이 있는 플롯 생성

이제 제목을 오른쪽에 배치한 다른 플롯을 생성해 보겠습니다. 새 셀에 다음 코드를 입력합니다.

plt.figure(figsize=(8, 5))
plt.plot(range(10))
plt.grid(True)
plt.title('Right-Aligned Title', loc='right')  ## 제목을 오른쪽에 배치
plt.show()
right-aligned-title

셀을 실행합니다. 이제 제목이 플롯의 오른쪽 가장자리에 정렬되어 표시되어야 합니다.

다른 제목 위치 비교

다양한 제목 위치 (가운데, 왼쪽 및 오른쪽) 를 비교하기 위해 세 개의 플롯 시퀀스를 생성해 보겠습니다. 새 셀에 다음 코드를 입력합니다.

## 가로로 정렬된 3 개의 서브플롯이 있는 figure 생성
fig, axes = plt.subplots(1, 3, figsize=(15, 4))

## 플롯 1: 가운데 정렬 제목 (기본값)
axes[0].plot(range(10))
axes[0].grid(True)
axes[0].set_title('Center Title')

## 플롯 2: 왼쪽 정렬 제목
axes[1].plot(range(10))
axes[1].grid(True)
axes[1].set_title('Left Title', loc='left')

## 플롯 3: 오른쪽 정렬 제목
axes[2].plot(range(10))
axes[2].grid(True)
axes[2].set_title('Right Title', loc='right')

plt.tight_layout()  ## 서브플롯 간 간격 조정
plt.show()
three-title-positions

세 가지 제목 위치를 나란히 보려면 셀을 실행합니다. 이 시각적 비교는 loc 매개변수가 제목 위치 지정에 미치는 영향을 이해하는 데 도움이 됩니다.

서브플롯으로 작업할 때는 전역 plt.title() 함수 대신 개별 축 객체에서 set_title() 메서드를 사용합니다.

사용자 정의 제목 세로 위치 지정

때로는 제목의 세로 위치를 조정하고 싶을 수 있습니다. 이 단계에서는 플롯 제목의 세로 (y 축) 위치를 수동으로 제어하는 방법을 배우게 됩니다.

제목의 Y 위치 이해

제목의 세로 위치는 title() 함수의 y 매개변수를 사용하여 조정할 수 있습니다. y 매개변수는 정규화된 좌표 값을 허용하며, 여기서:

  • y=1.0 (기본값) 은 제목을 플롯 상단에 배치합니다.
  • y>1.0은 제목을 플롯 상단 위에 배치합니다.
  • y<1.0은 제목을 플롯 상단 아래에 배치하여 플롯 내용에 더 가깝게 이동합니다.

사용자 정의 제목 Y 위치가 있는 플롯 생성

기본값보다 높게 배치된 제목이 있는 플롯을 생성해 보겠습니다. 새 셀에 다음 코드를 입력합니다.

plt.figure(figsize=(8, 5))
plt.plot(range(10))
plt.grid(True)
plt.title('Higher Title Position', y=1.1)  ## 제목을 더 높게 배치
plt.show()

셀을 실행합니다. 이제 제목이 기본 위치에 비해 플롯 위 약간 더 높게 표시되는 것을 확인하세요.

이제 기본값보다 낮게 배치된 제목이 있는 플롯을 생성해 보겠습니다.

plt.figure(figsize=(8, 5))
plt.plot(range(10))
plt.grid(True)
plt.title('Lower Title Position', y=0.9)  ## 제목을 더 낮게 배치
plt.show()

셀을 실행합니다. 이제 제목이 플롯 내용에 더 가깝게 표시되어야 합니다.

다른 Y 위치 비교

다양한 세로 제목 위치를 비교하기 위해 여러 플롯을 나란히 생성해 보겠습니다.

## 가로로 정렬된 3 개의 서브플롯이 있는 figure 생성
fig, axes = plt.subplots(1, 3, figsize=(15, 4))

## 플롯 1: 기본 Y 위치
axes[0].plot(range(10))
axes[0].grid(True)
axes[0].set_title('Default Position (y=1.0)')

## 플롯 2: 더 높은 Y 위치
axes[1].plot(range(10))
axes[1].grid(True)
axes[1].set_title('Higher Position', y=1.15)

## 플롯 3: 더 낮은 Y 위치
axes[2].plot(range(10))
axes[2].grid(True)
axes[2].set_title('Lower Position', y=0.85)

plt.tight_layout()  ## 서브플롯 간 간격 조정
plt.show()

세 가지 세로 위치를 나란히 보려면 셀을 실행합니다. 이 비교는 y 매개변수가 제목의 세로 위치에 미치는 영향을 이해하는 데 도움이 됩니다.

가로 및 세로 위치 결합

loc 매개변수 (가로 정렬용) 를 y 매개변수 (세로 위치용) 와 결합하여 원하는 위치에 제목을 정확하게 배치할 수 있습니다.

plt.figure(figsize=(8, 5))
plt.plot(range(10))
plt.grid(True)
plt.title('Custom Positioned Title', loc='right', y=1.1)  ## 오른쪽 정렬 및 더 높게
plt.show()

셀을 실행합니다. 이제 제목이 플롯의 오른쪽 가장자리에 정렬되고 기본값보다 높게 배치되어야 합니다.

서브플롯을 사용한 고급 제목 위치 지정

이 단계에서는 서브플롯 레이아웃 및 축 객체를 사용할 때 제목 위치 지정을 위한 고급 기술을 배우게 됩니다. 또한 suptitle() 함수를 사용하여 여러 서브플롯이 있는 figure 에 전체 제목을 추가하는 방법도 배우게 됩니다.

서브플롯 및 개별 제목이 있는 figure 생성

각각 자체적으로 다르게 배치된 제목이 있는 2x2 그리드의 서브플롯을 생성해 보겠습니다.

## 2x2 그리드의 서브플롯이 있는 figure 생성
fig, axes = plt.subplots(2, 2, figsize=(10, 8))

## 더 쉬운 반복을 위해 축의 2D 배열을 평탄화합니다.
axes = axes.flatten()

## 데이터를 플롯하고 각 서브플롯에 대해 다른 위치로 제목 설정
for i, ax in enumerate(axes):
    ax.plot(range(10))
    ax.grid(True)

## 왼쪽 상단 서브플롯: 기본 가운데 정렬 제목
axes[0].set_title('Default (Centered)')

## 오른쪽 상단 서브플롯: 왼쪽 정렬 제목
axes[1].set_title('Left-Aligned', loc='left')

## 왼쪽 하단 서브플롯: 오른쪽 정렬 제목
axes[2].set_title('Right-Aligned', loc='right')

## 오른쪽 하단 서브플롯: 사용자 정의 위치 제목
axes[3].set_title('Custom Position', y=0.85, loc='center')

## 서브플롯 간 간격 추가
plt.tight_layout()
plt.show()

셀을 실행합니다. 각기 다르게 배치된 제목이 있는 네 개의 서브플롯이 표시되어야 합니다.

suptitle() 을 사용하여 figure 수준 제목 추가

여러 서브플롯으로 작업할 때 전체 figure 에 대한 전체 제목을 추가하고 싶을 수 있습니다. 이는 suptitle() 함수를 사용하여 수행할 수 있습니다.

## 2x2 그리드의 서브플롯이 있는 figure 생성
fig, axes = plt.subplots(2, 2, figsize=(10, 8))

## 더 쉬운 반복을 위해 축의 2D 배열을 평탄화합니다.
axes = axes.flatten()

## 각 서브플롯에 데이터 플롯
for i, ax in enumerate(axes):
    ax.plot(range(10))
    ax.grid(True)
    ax.set_title(f'Subplot {i+1}')

## figure 에 전체 제목 추가
fig.suptitle('Multiple Subplots with an Overall Title', fontsize=16)

## 서브플롯 간 간격 추가
plt.tight_layout()
## suptitle 에 대한 상단 간격 추가
plt.subplots_adjust(top=0.9)
plt.show()

셀을 실행합니다. 각자 자체 제목이 있고 맨 위에 figure 에 대한 전체 제목이 있는 네 개의 서브플롯이 표시되어야 합니다.

축 제목과 figure 제목 결합

개별 서브플롯 제목을 전체 figure 제목과 결합할 수 있습니다.

## 2x2 그리드의 서브플롯이 있는 figure 생성
fig, axes = plt.subplots(2, 2, figsize=(10, 8))

## 각 서브플롯에 다른 제목 위치로 데이터 플롯
axes[0, 0].plot(range(10))
axes[0, 0].grid(True)
axes[0, 0].set_title('Centered Title', loc='center')

axes[0, 1].plot(range(10))
axes[0, 1].grid(True)
axes[0, 1].set_title('Left-Aligned Title', loc='left')

axes[1, 0].plot(range(10))
axes[1, 0].grid(True)
axes[1, 0].set_title('Right-Aligned Title', loc='right')

axes[1, 1].plot(range(10))
axes[1, 1].grid(True)
axes[1, 1].set_title('Lower Title', y=0.85)

## figure 에 전체 제목 추가
fig.suptitle('Advanced Title Positioning Demo', fontsize=16)

## 서브플롯 간 간격 추가
plt.tight_layout()
## suptitle 에 대한 상단 간격 추가
plt.subplots_adjust(top=0.9)
plt.show()

셀을 실행합니다. 각기 다르게 배치된 제목이 있고 figure 상단에 전체 제목이 있는 네 개의 서브플롯이 있는 figure 가 표시되어야 합니다.

suptitle() 함수는 전체 figure 를 설명하는 기본 제목을 추가하는 데 유용하며, 축 객체에 대한 개별 set_title() 호출은 각 서브플롯에 더 구체적인 제목을 추가합니다.

RCParams 를 사용한 전역 제목 위치 지정

이 마지막 단계에서는 Matplotlib 의 런타임 구성 매개변수 (RCParams) 를 사용하여 제목 위치 지정을 위한 전역 기본값을 설정하는 방법을 배우게 됩니다. 이는 개별적으로 각 플롯에 대해 지정할 필요 없이 노트북 또는 스크립트의 모든 플롯이 일관된 제목 위치 지정을 사용하도록 하려는 경우에 유용합니다.

Matplotlib 에서 RCParams 이해

Matplotlib 의 동작은 rcParams이라는 딕셔너리 유사 변수를 사용하여 사용자 정의할 수 있습니다. 이를 통해 제목 위치 지정을 포함한 다양한 속성에 대한 전역 기본값을 설정할 수 있습니다.

rcParams 를 사용하여 전역 제목 위치 지정 설정

제목 위치 지정을 위한 전역 기본값을 설정한 다음 이러한 설정을 자동으로 사용하게 될 몇 가지 플롯을 생성해 보겠습니다.

## 현재 기본값 보기
print("Default title y position:", plt.rcParams['axes.titley'])
print("Default title padding:", plt.rcParams['axes.titlepad'])

셀을 실행하여 기본값을 확인합니다. 이제 이러한 설정을 수정해 보겠습니다.

## 제목 위치 지정을 위한 새로운 전역 기본값 설정
plt.rcParams['axes.titley'] = 1.05     ## 제목 y 위치를 더 높게 설정
plt.rcParams['axes.titlepad'] = 10     ## 제목과 플롯 사이의 패딩 설정
plt.rcParams['axes.titlelocation'] = 'left'  ## 기본 정렬을 왼쪽으로 설정

## 새로운 기본값을 사용할 플롯 생성
plt.figure(figsize=(8, 5))
plt.plot(range(10))
plt.grid(True)
plt.title('This Title Uses Global RCParams Settings')
plt.show()

셀을 실행합니다. title() 함수에서 어떤 위치 지정 매개변수도 지정하지 않았음에도 불구하고 제목이 정의한 전역 설정에 따라 배치되는 것을 확인하세요.

동일한 설정으로 여러 플롯 생성

전역 설정을 모두 사용하는 여러 플롯을 생성해 보겠습니다.

## 2x2 그리드의 서브플롯이 있는 figure 생성
fig, axes = plt.subplots(2, 2, figsize=(10, 8))

## 더 쉬운 반복을 위해 축의 2D 배열을 평탄화합니다.
axes = axes.flatten()

## 전역 설정을 사용하는 제목으로 각 서브플롯에 데이터 플롯
for i, ax in enumerate(axes):
    ax.plot(range(10))
    ax.grid(True)
    ax.set_title(f'Subplot {i+1} Using Global Settings')

plt.tight_layout()
plt.show()

셀을 실행합니다. 네 개의 모든 서브플롯 제목이 이전에 정의한 전역 설정에 따라 배치되어야 합니다.

RCParams 를 기본값으로 재설정

RCParams 를 기본값으로 재설정하려면 rcdefaults() 함수를 사용할 수 있습니다.

## 기본 설정으로 재설정
plt.rcdefaults()

## 기본 설정으로 플롯 생성
plt.figure(figsize=(8, 5))
plt.plot(range(10))
plt.grid(True)
plt.title('This Title Uses Default Settings Again')
plt.show()

셀을 실행합니다. 이제 제목이 Matplotlib 의 기본 설정을 사용하여 배치되어야 합니다.

임시 RCParams 변경

코드의 특정 섹션에 대해서만 RCParams 를 일시적으로 변경하려면 컨텍스트 관리자를 사용할 수 있습니다.

## 기본 설정으로 플롯 생성
plt.figure(figsize=(8, 5))
plt.plot(range(10))
plt.grid(True)
plt.title('Default Settings')
plt.show()

## 이 섹션에 대해서만 RCParams 를 일시적으로 변경
with plt.rc_context({'axes.titlelocation': 'right', 'axes.titley': 1.1}):
    plt.figure(figsize=(8, 5))
    plt.plot(range(10))
    plt.grid(True)
    plt.title('Temporary Settings Change')
    plt.show()

## 다시 기본 설정을 사용할 다른 플롯 생성
plt.figure(figsize=(8, 5))
plt.plot(range(10))
plt.grid(True)
plt.title('Back to Default Settings')
plt.show()

셀을 실행합니다. 세 개의 플롯이 표시되어야 합니다.

  1. 기본 제목 위치 지정을 사용한 첫 번째 플롯
  2. 오른쪽 정렬 및 더 높게 배치된 제목을 사용한 두 번째 플롯 (임시 설정으로 인해)
  3. 다시 기본 제목 위치 지정을 사용한 세 번째 플롯 (임시 설정은 컨텍스트 관리자 내에서만 적용되므로)

이 접근 방식을 사용하면 나머지 플롯에 영향을 주지 않고 전역 설정에 대한 임시 변경을 수행할 수 있습니다.

요약

이 랩에서는 Matplotlib 에서 플롯 제목의 위치를 제어하는 방법을 배웠습니다.

  • 기본 제목 위치 지정: 기본 위치 지정을 사용하여 가운데 정렬된 제목이 있는 간단한 플롯을 만들었습니다.

  • 수평 위치 지정: loc 매개변수를 사용하여 플롯의 왼쪽 또는 오른쪽에 제목을 정렬하는 방법을 배웠습니다.

  • 수직 위치 지정: y 매개변수를 사용하여 제목의 수직 위치를 조정하고 플롯과 관련하여 더 높거나 낮게 배치하는 방법을 배웠습니다.

  • 서브플롯을 사용한 고급 기술: 개별 서브플롯에서 제목을 배치하는 방법과 suptitle()을 사용하여 전체 figure 제목을 추가하는 방법을 살펴보았습니다.

  • RCParams 를 사용한 전역 설정: Matplotlib 의 런타임 구성 매개변수를 사용하여 제목 위치 지정을 위한 전역 기본값을 설정하는 방법을 배웠으며, 이를 통해 여러 플롯에서 일관된 스타일을 적용할 수 있습니다.

이러한 기술은 제목이 원하는 위치에 정확하게 배치된 더욱 전문적이고 시각적으로 매력적인 데이터 시각화를 만드는 데 도움이 될 것입니다. 제목 위치 지정은 효과적인 데이터 시각화의 작지만 중요한 측면으로, 청중의 주의를 유도하고 플롯의 전반적인 명확성을 향상시키는 데 도움이 됩니다.

추가 탐색을 위해 글꼴 속성, 회전 및 색상과 같은 다른 제목 사용자 정의 옵션을 실험하여 시각화의 영향을 더욱 높이는 것을 고려해 보세요.