Hi There 👋

데이터 시각화 가장 기초적이고 기본적인 차트인 Bar Plot에 대해서 배워보자

✅ Matplotlib에 대해서 배워보자

우선 Matplotlib 공홈에 있는 설명을 가져오자면 아래와 같다. (https://matplotlib.org/)

파이썬에서 Visualization을 할 수 있도록 만들어주는 가장 대중적이고 기본적인 라이브러리다.

numpy와 scipy를 base로 하여 다양한 라이브러리와 호환성이 좋다.

파이썬에서는 Seaborn, Plotly, Bokeh, Altair 등 다양한 시각화 라이브러리가 존재하지만,

앞서 말했듯이 Matplotlib이 제일 범용성이 넓고, base가 되는 라이브러리이다.

Matplotlib을 사용해보자

우선 파이썬에서 matplotlib 라이브러리를 불러오자

import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt

matplotlob 중 pyplot 모듈을 가장 많이 사용하기 때문에 pyplot도 따로 불러온다.

Matplotlib의 기본 사용법은 figure라는 Canvas에 Axes라는 피사체를 그린다고 생각하면 된다.

이걸 코드로 나타내면 아래와 같다.

fig = plt.figure(figsize=(12, 7)) #figsize는 canvas의 크기를 의미
ax = fig.add_subplot()
plt.show()

그리고 한 캔버스 안에 2개의 그래프를 나타내고 싶으면 아래와 같다.

fig = plt.figure()
ax = fig.add_subplot(121) 
# ax = fig.add_subplot(1, 2, 1)로 사용가능
ax = fig.add_subplot(122) 
plt.show()

여기서 121이 의미하는건 1행 2열 1번째 axe를 의미한다. 따라서 자기가 원하는 형태에 따라 자유자재로 변경하면 된다.

주의할 점은 몇번째 axe를 선택할때는 0부터 시작하는게 아니라 1부터 시작한다는 점을 주의하자

여기서 몇단계를 건너뛰고 데이터를 입력하고 그래프로 표현해보자면 아래와 같다.

fig = plt.figure()
ax = fig.add_subplot(111) 
ax.plot([1, 1, 1], label='1') 
ax.plot([2, 2, 2], label='2') 
ax.plot([3, 3, 3], label='3')
# 데이터를 입력하고 각 label을 입력

ax.set_title('Basic Plot') # 표 title을 입력
ax.set_xticks([0, 1, 2]) # x축 눈금 표시
ax.set_xticklabels(['zero', 'one', 'two']) # x축 눈금 0 1 2를 해당 문자열로 대체 표시
ax.legend() # 우측 상단 범례 표시 (위치 default값은 그래프를 제일 간섭하지 않은 장소에 표시)

plt.show()

이런 식으로 그래프를 하나하나 그려나갈 수 있다.

✅ Barplot을 배워보자

이제 본론으로 들어와서 barplot에 대해서 배워보자

barplot은 우리가 알고있는 막대그래프라고 생각하면 된다.

범주형 데이터 수치값을 비교하기 좋은 그래프이다. (개별 비교, 그룹 비교 모두 적합)

Barplot의 주의점

Barplot을 사용할때 주의할 점이 있다.

  • x축은 무조건 0에서 시작해야한다.
    • x축이 0에서 시작하지 않고 중간에서 시작한다고 할때, 실제로 차이가 크지 않지만 차이가 커보이는 속임수처럼 보일 수 있다.
  • 데이터는 정렬해서 표시를 해줘야한다.
    • Pandas에서는 sort_values(), sort_index()를 사용해서 정렬
    • 데이터 종류에 따라서 아래 기준으로 정렬
      • 시계열 : 시간순
      • 수치형 : 크기순
      • 순서형 : 범주 순서대로
      • 명목형 : 범주 값 따라 정렬
    • 대시보드에서는 Interactive로 제공하는 것이 유용
  • 무의미한 3D 그래프, 직사각형이 아닌 다른 도형 그래프는 지양하자
  • Bar 사이 Gap이 0이라면 히스토그램으로 .hist()를 통해 사용할 수 있다.

Barplot를 사용해보자

제일 기본적으로 .bar()를 통해 barplot을 나타낸다.

여기서 .barh()는 horizontal barplot으로 x축과 평행한 barplot으로 생각하면 된다.

우선 barplot를 그릴 데이터를 준비하자. Pandas로 데이터를 불러오고 groupby를 통해 데이터를 가공한다.

group = student.groupby('gender')['race/ethnicity'].value_counts().sort_index()
display(group)
print(student['gender'].value_counts())

그리고 그래프를 그려보면,

fig, axes = plt.subplots(1, 2, figsize=(15, 7)) #sharey = True라는 파라미터를 사용하면 y축 범위를 공유한다
axes[0].bar(group['male'].index, group['male'], color='royalblue')
axes[1].bar(group['female'].index, group['female'], color='tomato')

for ax in axes: #y축 범위를 표시해주는 for문
    ax.set_ylim(0, 200)
    
plt.show()

다양한 barplot을 그려보자

barplot은 단순 막대그래프로 표현하는 것 말고 다양하게 그래프를 표현할 수 있다.

위에 나타는 barplot은 Multiple bar plot으로 이것 말고 stacked barplot, percentage stacked barplot, overlapped barplot, grouped barplot 등 필요에 따라서 다양하게 나타낼 수 있다.

barplot의 documentation을 참고하자 (https://matplotlib.org/stable/api/_as_gen/matplotlib.pyplot.bar.html)

profile
레디메이드인생

0개의 댓글