[파이썬] ggplot 원형 차트 및 도넛 차트 그리기

데이터 시각화는 데이터를 이해하고 전달하는 데 중요한 역할을 합니다. 원형 차트 및 도넛 차트는 데이터의 구성을 시각적으로 표현하여 비율과 상대적인 크기를 쉽게 파악할 수 있게 해줍니다. 이번 포스트에서는 파이썬의 ggplot 패키지를 사용하여 원형 차트 및 도넛 차트를 그리는 방법을 알아보겠습니다.

ggplot 패키지 설치

먼저, ggplot 패키지를 설치해야 합니다. 파이썬의 패키지 관리자인 pip를 사용하여 설치할 수 있습니다. 다음 명령어를 터미널 또는 명령 프롬프트에 입력하여 패키지를 설치합니다.

pip install ggplot

원형 차트 그리기

원형 차트는 데이터를 원형으로 표현하는 차트입니다. 데이터의 각 부분이 전체에 대한 비율을 나타내며, 각 부분에 해당하는 각도를 가지고 있습니다. ggplot 패키지는 geom_bar() 함수를 사용하여 원형 차트를 그릴 수 있습니다. 예제를 통해 알아보겠습니다.

import pandas as pd
from ggplot import *

# 예제 데이터 생성
data = pd.DataFrame({'category': ['A', 'B', 'C', 'D'],
                     'value': [10, 20, 30, 40]})

# 원형 차트 그리기
p = ggplot(aes(x='', y='value', fill='category'), data=data) + geom_bar(stat='identity')
p = p + coord_polar(theta='y')
p.show()

위 코드는 4개의 카테고리 (A, B, C, D)에 대한 값을 가지는 데이터를 생성하고, 이를 원형 차트로 표현하는 예제입니다. geom_bar() 함수를 사용하여 데이터를 원형 차트로 변환하고, coord_polar() 함수를 사용하여 차트를 원형으로 표현합니다. 마지막으로 show() 함수를 사용하여 차트를 출력합니다.

도넛 차트 그리기

도넛 차트는 원형 차트와 유사하지만, 차트의 중앙에 통과하는 구멍이 있는 차트입니다. 도넛 차트는 원형 차트에 비해 데이터의 구성을 더 세부적으로 파악할 수 있게 해줍니다. ggplot 패키지를 사용하여 도넛 차트를 그리는 방법은 매우 간단합니다. 예제를 통해 알아보겠습니다.

import pandas as pd
from ggplot import *

# 예제 데이터 생성
data = pd.DataFrame({'category': ['A', 'B', 'C', 'D'],
                     'value': [10, 20, 30, 40]})

# 도넛 차트 그리기
p = ggplot(aes(x='', y='value', fill='category'), data=data) + geom_bar(stat='identity')
p = p + coord_polar(theta='y') + theme_void() + theme(legend_position="none") + ggtitle("도넛 차트")
p = p + annotate("text", x=0, y=0, label="Total", color="black", size=12, fontfamily="Arial")
p.show()

위 코드는 4개의 카테고리 (A, B, C, D)에 대한 값을 가지는 데이터를 생성하고, 이를 도넛 차트로 표현하는 예제입니다. 앞서 원형 차트와 유사한 방법으로 geom_bar() 함수를 사용하여 차트를 변환합니다. 추가적으로 theme_void() 함수를 사용하여 배경을 투명하게 만들고, theme(legend_position="none") 함수를 사용하여 범례를 제거합니다. 또한, ggtitle() 함수와 annotate() 함수를 사용하여 제목과 중앙에 표시될 텍스트를 추가합니다.

이제 원형 차트와 도넛 차트를 그리는 방법을 알았습니다. ggplot 패키지의 다양한 기능을 활용하면 데이터를 시각적으로 표현하는 다양한 차트를 그릴 수 있습니다. 데이터 시각화를 통해 데이터의 패턴과 관계를 쉽게 파악할 수 있으므로, 데이터 분석과 시각화에 관심이 있는 분들에게 권장합니다.