Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Matplotlib 원형 차트에서 조건에 따라 레이블 제거하기

Matplotlib 원형 차트(pie chart)에서 특정 조건에 따라 레이블을 제거하려면 아래 단계를 순서대로 따르면 됩니다.

  • 그림(figure) 크기를 설정하고, 서브플롯 사이와 주변의 여백(padding)을 조정합니다.
  • 2차원 구조로 크기가 가변적이며 서로 다른 타입의 데이터를 담을 수 있는 Pandas 데이터프레임을 생성합니다.
  • pie() 메서드를 사용해 원형 차트를 그리되, 레이블을 조건부로 제거합니다. 예를 들어 백분율 값이 25보다 클 때만 레이블을 유지하고, 그렇지 않으면 레이블을 제거합니다.
  • show() 메서드를 호출하여 그림을 화면에 표시합니다.

예제 코드

import pandas as pd
from matplotlib import pyplot as plt

# 그림 크기 설정
plt.rcParams["figure.figsize"] = [7.00, 3.50]
plt.rcParams["figure.autolayout"] = True

# Pandas 데이터프레임 생성
df = pd.DataFrame(
   {
      'activities': ['sleep', 'exercise', 'work', 'study'],
      'hours': [8, 1, 9, 4]
   }
)

# 레이블을 조건부로 제거하는 원형 차트
df.set_index('activities').plot.pie(y='hours', legend=False, autopct=lambda p: format(p, '.2f') if p > 25 else None)

plt.show()

실행 결과

위 코드를 실행하면 다음과 같은 결과가 출력됩니다.

Matplotlib 원형 차트에서 조건에 따라 레이블 제거하기Matplotlib 원형 차트에서 조건에 따라 레이블 제거하기

결과 해석

출력된 원형 차트를 보면, 값의 백분율이 25보다 큰 경우에만 레이블이 표시되는 것을 확인할 수 있습니다. 이는 autopct 매개변수에 전달된 lambda 함수 덕분입니다. 이 함수는 각 조각의 백분율 p를 받아, p가 25보다 클 때만 소수점 두 자리 형식으로 값을 반환하고, 그렇지 않으면 None을 반환하여 레이블을 숨깁니다.

예제에서 "exercise"(약 5%)와 "study"(약 19%)의 비율은 25보다 작기 때문에 해당 항목의 레이블은 원형 차트에 나타나지 않으며, "sleep"과 "work"처럼 비율이 큰 항목에만 백분율 레이블이 표시됩니다.