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()실행 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.


결과 해석
출력된 원형 차트를 보면, 값의 백분율이 25보다 큰 경우에만 레이블이 표시되는 것을 확인할 수 있습니다. 이는 autopct 매개변수에 전달된 lambda 함수 덕분입니다. 이 함수는 각 조각의 백분율 p를 받아, p가 25보다 클 때만 소수점 두 자리 형식으로 값을 반환하고, 그렇지 않으면 None을 반환하여 레이블을 숨깁니다.
예제에서 "exercise"(약 5%)와 "study"(약 19%)의 비율은 25보다 작기 때문에 해당 항목의 레이블은 원형 차트에 나타나지 않으며, "sleep"과 "work"처럼 비율이 큰 항목에만 백분율 레이블이 표시됩니다.