개발/파이썬

파이썬. Matplotlib - Bar Chart

웅'jk 2022. 11. 28. 14:12

Matplotlib 을 이용한 차트를 만들어봅시다.

 

import matplotlib.pyplot as plt
import numpy as np

x 축에는 0~ 9 까지의 수 , y 축도 x와 마찬가지로 0~9 까지의 값으로 

 

y=x 그래프를 만들어 봅시다.

 

x = np.arange(0,9+1)
y = x

plt.plot(x,y) # plot 함수 
plt.savefig('test1.jpg') # 이미지로 저장
plt.show() # 출력

 

이번에는 Bar 형식의 차트를 만들어 봅시다.

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

%matplotlib inline

df = pd.read_csv('../data/pokemon.csv')

df에는 위와 같은 값이 들어있습니다.

 

'generation_id' 컬럼 데이터로 만들어보겠습니다.

먼저 카테고리컬 데이터인지 확인합니다.

df['generation_id'].nunique()
df['generation_id'].unique()

그 다음 같은 데이터로 이루어진 데이터들을 축으로 삼아 차트를 만듭니다.

df['generation_id'].value_counts() 
# value_counts 말고 groupby를 통해 묶어서 구해도 됩니다.

sb.countplot(data= df , x= 'generation_id')
# seaborn 의 countplot로 data에 df인자를, x에 컬럼값을 넣어줍니다.
plt.show()

차트의 색상은 color= '색상'으로 변경이 가능합니다.

base_color = sb.color_palette()[2]
# seaborn의 기본 색상값중 3번째항목
sb.countplot(data= df , x= 'generation_id',color=base_color)

정렬을 하고 싶다면 order='정렬된 index' 으로 가능합니다.

base_order =df['generation_id'].value_counts().index
# x 축값이 generation_id 값이므로 index 값을 가져온다.
base_order = base_order[::-1] 
# 가져온 값의 역순으로 만든다.
sb.countplot(data= df , x= 'generation_id',color=base_color,order = base_order)

이번에는 type_1 항목으로 만들어 보겠습니다.

base_order = df['type_1'].value_counts().index
# 정렬을 위한 index 가져오기
sb.countplot(data = df , x = 'type_1',color = base_color,order=base_order)
plt.xticks(rotation = 60)
# x축의 값을 회전시킨다.
plt.show()

또한 데이터의 일부분만을 보고 싶을 때는 order  = '컬럼 index' 를 적극 이용한다.

ex) 상위 6개만 나타내어라.

base_order2 = df['type_1'].value_counts().index[0:5+1]
# order 를 위한 base_order2 변수로 index 값을 0~ 5까지의 값만 가져온다.
sb.countplot(data = df , y = 'type_1' , color=base_color , order = base_order2 )
plt.show()

위 코드에서 x = 이 아니라 y= 으로 값을 지정하면 위 사진처럼 나오게 된다.