pbj0812의 코딩 일기

[PYTHON] 동일한 알파벳에 동일한 색을 매핑하여 파이차트 그리기 본문

ComputerLanguage_Program/PYTHON

[PYTHON] 동일한 알파벳에 동일한 색을 매핑하여 파이차트 그리기

pbj0812 2022. 1. 7. 00:44

0. 목표

 - 동일한 알파벳에 동일한 색을 매핑하여 파이차트 그리기

1. 실습

 1) library 호출

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

 2) 데이터 생성

df = pd.DataFrame({'category' : ['a', 'b', 'c', 'd', 'e', 'f'], 'num' : [1, 4, 7, 9, 3, 7]})
df2 = pd.DataFrame({'category' : ['e', 'g', 'c', 'b', 'a'], 'num' : [4, 2, 1, 6, 3]})

 3) 파이 차트 그리기

fig, ax = plt.subplots(1, 2)
fig.set_size_inches(15, 10)
ax[0].pie(df['num'], labels = df['category'])
ax[1].pie(df2['num'], labels = df2['category'])

 4) 데이터 정렬하기

  - 숫자 크기별로 정렬하기

df_copy = df.copy()
df2_copy = df2.copy()

df_copy.sort_values('num', ascending = False, inplace = True)
df2_copy.sort_values('num', ascending = False, inplace = True)

df_copy.reset_index(drop = True, inplace = True)
df2_copy.reset_index(drop = True, inplace = True)

 5) 카테고리 추출하기

  - 두 데이터 프레임의 알파벳들을 모으기

df_category = df_copy['category']
df2_category = df2_copy['category']

category = list(set(list(df_copy['category']) + list(df2_copy['category'])))

 6) 카테고리와 동일한 크기의 파레트 만들기

colors = sns.color_palette('hls',len(category))

 7) 인덱스를 이용하여 알파벳마다 색 매핑하기

df_color = []
for i in df_category:
    df_color.append(colors[category.index(i)])

df2_color = []
for i in df2_category:
    df2_color.append(colors[category.index(i)])

 8) 그림 그리기

fig, ax = plt.subplots(1, 2)
fig.set_size_inches(15, 10)
ax[0].pie(df_copy['num'], 
          labels = df_copy['category'], 
          colors = df_color, 
          counterclock = False,
          startangle = 90)

ax[1].pie(df2_copy['num'], 
          labels = df2_copy['category'], 
          colors = df2_color, 
          counterclock = False,
          startangle = 90);

2. 참고

 - 색상 바꾸기

Comments