Python/Matplotlib

Matplotlib를 사용하여 원형 그래프 그리기

webnautes 2024. 6. 3. 23:17
반응형

Matplotlib를 사용하여 원형 그래프를 그리는 예제입니다.



2024. 6. 3 최초작성






import matplotlib.pyplot as plt
import numpy as np
import pandas as pd



def plot_class_distribution(y):

    # 8x8 인치의 그래프를 그리게 됩니다.
    fig, ax = plt.subplots(figsize=(8, 8))
   
    # 입력 데이터프레임으로부터 클래스의 비율을 계산합니다.
    value_counts = y.value_counts()
   
    # 원형 그래프 생성합니다.
    wedges, texts, autotexts = ax.pie(

        # 파이 차트에 표시할 값들의 시퀀스입니다. 여기서는 클래스 분포를 나타내는 값들이 들어 있습니다. 즉, 각 클래스의 데이터 개수를 포함한 시리즈입니다.
        value_counts,

        # 파이 차트의 각 조각에 비율을 자동으로 표시하는 형식을 지정합니다. 이 람다 함수는 조각의 비율(p)을 받아서,
        # 이를 소수점 첫째 자리까지의 백분율({p:.1f}%)과 해당 조각의 실제 수치(({int(p*sum(value_counts)/100)}))로 변환하여 표시합니다.
        autopct=lambda p: f'{p:.1f}%\n({int(p*sum(value_counts)/100)})',

        # 파이 차트의 시작 각도를 지정합니다. 여기서는 90도로 설정되어 있어, 파이 차트가 위쪽에서 시작하여 시계 방향으로 그려집니다.
        startangle=90,

        # 파이 차트의 각 조각에 사용할 색상 팔레트를 지정합니다.
        colors=['yellow', 'orange']
    )
   
    # 그래프 제목입니다.
    ax.set_title('Distribution of Classes')
   
    # 범례입니다.
    ax.legend(
        wedges,  # 파이 차트의 각 조각(Wedge) 객체의 리스트입니다. 이 객체들은 각 파이 조각을 나타냅니다.
        value_counts.index,  # 범례 항목의 레이블 목록입니다. 여기서는 클래스의 이름이 사용됩니다.
        title="Class"# 범례의 제목입니다. 여기서는 "Class"로 설정되어 있습니다.
        loc="center left"# 범례의 위치로 'center left'가 설정되어, 범례가 축의 왼쪽 가운데에 위치하게 됩니다.
    )

   
    # 레이아웃 조정 및 그래프를 화면에 보여줍니다.
    plt.tight_layout()
    plt.show()



# 실행할때마다 똑같은 결과가 나오도록(결과의 재현성) 랜덤 시드를 설정합니다.
np.random.seed(42)


# 가상으로 생성할 데이터 크기입니다.
data_size = 500


# 0과 1, 2개의 클래스에 대한 데이터를 생성합니다. 랜덤으로 생성되는 각 클래스의 개수를 정해주는 확률은 0.4와 0.6입니다.
classes = np.random.choice([0, 1], size=data_size, p=[0.4, 0.6])

# 생성된 데이터를 판다스의 데이터프레임으로 변환합니다.
y = pd.DataFrame(classes)

# 클래스 분포를 나타내는 원형 그래프를 그려줍니다.
plot_class_distribution(y)


반응형