[네부캠] Week3 - Matplotlib(1) : Bar Plot

오홍석·2024년 8월 22일
0

네부캠

목록 보기
10/28

학습 정리


Bar Plot이란?

  • 직사각형 막대를 사용하여 데이터의 값을 표현하는 차트 또는 그래프를 이야기한다.
  • 막대 그래프, bar chart, bar graph 등 다양한 이름으로도 불려진다.
  • 범주(Category)에 따른 수치 값을 비교하기에 적합한 방법이다.
    • 개별 비교, 그룹 비교 모두 적합하다.

기본적인 Bar Plot 그리기

  • matplotlib에서 bar plot을 그리는 방법
    • bar() : 수직 (vertical), x축에 범주, y축에 값을 표기한다.
    • barh() : 수평 (horizontal), y축에 범주, x축에 값을 표기한다. 범주가 많을 때 적합한 방법이다.
    • 다양한 파라미터
      • color : bar의 색상을 지정할 수 있다.
      • alpha : bar의 투명도를 지정할 수 있다. 0 ~ 1

다양한 Bar Plot

  • Bar Plot에서는 범주에 대해 각 값을 표현하는 방식이므로 1개의 feature에 대해서만 보여준다.
  • 여러 Group을 보여주기 위해서는 방법이 필요하다.
    • 플롯을 여러 개 그리는 방법
    • 한 개의 플롯에 동시에 나타내는 방법
      • 쌓아서 표현하기
      • 겹쳐서 표현하기
      • 이웃에 배치하여 표현하기

Stacked Bar Plot

  • 2개 이상의 그룹을 쌓아서 표현하는 Bar Plot을 말한다
  • 각 bar에서 나타나는 그룹의 순서는 항상 유지된다.
  • 맨 밑의 bar의 분포는 파악하기 쉽지만 그 위의 분포들은 파악하기 어렵다
  • bar()에서는 bottom 파라미터를 사용한다.
ax.bar(group['male'].index, group['male'], color='royalblue')
ax.bar(group['female'].index, group['female'], bottom=group['male'], color='tomato')
  • barh()에서는 left 파라미터를 사용한다.
ax.barh(group['male'].index, group['male']/total, color='royalblue')

ax.barh(group['female'].index, group['female']/total,
		left=group['male']/total, color='tomato') # total은 group['male'] + group['female']
Stacked Bar ChartPercentage Stacked Bar Chart

Overlapped Bar Plot

  • 2개 그룹만 비교하면 겹쳐서 만드는 것도 하나의 선택지이다. 3개이상은 구분이 어렵다.

  • 같은 축을 사용하여 비교가 더 용이하다.

  • 같은 ax(데이터가 그려지는 캔버스)에 bar plot을 그리고 alpha(투명도)를 조정하여 겹치는 부분을 파악한다.

    Overlapped Bar Plot


Grouped Bar Plot

  • 그룹별 범주에 따른 bar를 이웃되게 배치하여 표현하는 방법이다.

  • matplotlib으로는 구현이 까다롭다. -> seaborn을 사용하면 쉽게 그릴 수 있다.

  • 3가지 기술을 사용하여 구현 가능하다.

    • x축 조정
    • width 조정
    • xticks, xticklabels 조정
  • 그룹 개수에 따른 좌표

    • 2개 : 12,12-\frac{1}{2}, \frac{1}{2}
    • 3개 : 1,0,1  (22,0,22)-1, 0, 1\; (-\frac{2}{2}, 0, \frac{2}{2})
    • 4개 : 32,12,12,32-\frac{3}{2}, -\frac{1}{2}, \frac{1}{2}, \frac{3}{2}
    • N개 : x+N+1+2i2width  여기서 x는 index, i는 group의 순서x + \frac{-N+1+2*i}{2}*width \;\text{여기서 x는 index, i는 group의 순서}
  • 순서

    • 하나의 bar가 가질 width를 정한다.
    • 하나의 캠퍼스에 bar plot을 여러번 그린다. 여기서 x(bar) Or y(barh) 좌표는 그룹의 개수에 따라 구해진 좌표를 통해 그린다. (반복문 또는 ax.bar 여러번 호출)
    • xticks의 길이를 조정하고, xticklabels를 조정한다.
    Grouped Bar Plot

profile
기동코딩

0개의 댓글