코딩하는 해맑은 거북이

[데이터시각화] Pie Charts 본문

Data Analysis & Viz

[데이터시각화] Pie Charts

#CJE 2023. 3. 27.
본 게시물의 내용은 '부스트캠프 AI Tech - Data Visualization(안수빈)' 강의를 듣고 작성하였다.
해당 글은 아래의 2가지를 다룬다.
🍀 Pie Chart
🍀 Pie Chart 응용
  🟡 Donut Chart
  🟡 Sunburst Chart

 

🍀 Pie Chart

- 원을 부채꼴로 분할하여 표현하는 통계 차트

  → 전체를 백분위로 나타낼 때 유용

- 가장 많이 사용하는 차트지만, 구체적인 비교가 어렵고 유용성이 떨어지기 때문에 지양한다.

  → 오히려 bar plot이 더 유용 (각도 <<< 길이)

  → 사용을 꼭 하고 싶다면 함께 사용할 것을 권장

  → waffle chart가 비교에 더 유용하다

 

  • pie() : pie chart 생성
labels = ['A', 'B', 'C', 'D']
data = np.array([60, 90, 45, 165]) # total 360
fig, ax = plt.subplots(1, 1, figsize=(7, 7))
ax.pie(data, labels=labels)
plt.show()

  • startangle : 시작 각도 설정
fig, ax = plt.subplots(1, 1, figsize=(7, 7))
ax.pie(data, labels=labels, 
        startangle=90)
plt.show()

  • explode : 원하는 부분을 피자조각처럼 떼어내서 강조역할을 할 수 있다
fig, ax = plt.subplots(1, 1, figsize=(7, 7))
explode = [0, 0, 0.2, 0]   # 원하는 부분에 피자조각처럼 떼어내서 강조

ax.pie(data, labels=labels, explode=explode, startangle=90)
plt.show()

  • shadow : 그림자
  • autopct : 부채꼴 안에 값을 나타낼 숫자의 형식을 지정한다 '%.1f%%'은 소수점 첫째자리 까지 보여줌
fig, ax = plt.subplots(1, 1, figsize=(7, 7))
explode = [0, 0, 0.2, 0]

ax.pie(data, labels=labels, explode=explode, startangle=90,
      shadow=True, autopct='%1.1f%%') # 값을 퍼센트로 보여줌
plt.show()

 

  • labeldistance : label을 pie chart에서 얼만큼 거리를 둬서 나타낼지 설정
  • rotatelabels : label을 중심점을 기준으로 각도를 회전해서 보여준다
fig, ax = plt.subplots(1, 1, figsize=(7, 7))
explode = [0, 0, 0.2, 0]

ax.pie(data, labels=labels, explode=explode, startangle=90,
      shadow=True, autopct='%1.1f%%', labeldistance=1.15  # label을 파이차트에서 띄어줌
       ,rotatelabels=90  # label을 중심점을 기준으로 각도회전
      )
plt.show()

  • pctdistance : 원의 공간에서 몇퍼센트 떨어진 공간에 label을 둘지 설정
  • textprops :  text의 색이나 크기 등 설정
fig, ax = plt.subplots(1, 1, figsize=(7, 7))
explode = [0, 0, 0.2, 0]

ax.pie(data, labels=labels, explode=explode, startangle=90,
      shadow=True, autopct='%1.1f%%', labeldistance=1.15,
      pctdistance=0.85, textprops={'color':'b'})
plt.show()

  • counterclock=False : 시계방향으로 그려준다
fig, ax = plt.subplots(1, 1, figsize=(7, 7))
explode = [0, 0, 0.2, 0]

ax.pie(data, labels=labels, explode=explode, startangle=90, counterclock=False)
plt.show()

  • radius : 반지름을 설정한다
fig, axes = plt.subplots(1, 3, figsize=(12, 7))
explode = [0, 0, 0.2, 0]

for size, ax in zip([1, 0.8, 0.5], axes):
    ax.pie(data, labels=labels, explode=explode, startangle=90, counterclock=False,
           radius=size    # 반지름을 설정
          )
plt.show()

 

 

 

 

🍀 Pie Chart 응용

🟡 Donut Chart 

- 중간이 비어있는 Pie Chart

- Plotly에서 쉽게 사용 가능

 

- 중간에 흰 원을 추가해서 도넛모양을 만든다.

fig, ax = plt.subplots(1, 1, figsize=(7, 7))
ax.pie(data, labels=labels, startangle=90,
      shadow=True, autopct='%1.1f%%', pctdistance=0.85, textprops={'color':"w"})

# 좌표 0, 0, r=0.7, facecolor='white'
# 중간에 흰 원을 추가해서 도넛모양을 만든다.
centre_circle = plt.Circle((0,0),0.70,fc='white')
ax.add_artist(centre_circle)

plt.show()

 

 

🟡 Sunburst Chart 

- 햇살(sunburst)을 닮은 차트

- 계층적 데이터를 시각화하는 데 사용

- 구현 난이도에 비해 화려하다는 장점이 있지만 가독성이 떨어지므로 지양한다. 오히려 Treemap을 추천함

- Plotly로 쉽게 사용 가능

 

 

 

Comments