본문 바로가기

부스트캠프 AI Tech 3기/이론 : U-stage

[Day11] Data Visualization 2-1. Bar plot

막대 그래프 = Bar chart, Bar graph, bar plot

직사각형 막대를 사용해서 데이터를 표현하는 그래프

범주(category)형을 비교하기에 적합하다.

 

방향에 따른 분류

  • .bar() : 수직 방향 : vertical
    x축에 범주, y축에 값
  • .barh() : 수평 방향 : horizontal
    y축에 범주, z축에 값

다양한 Bar Plot

1. Multiple Bar plot

그룹별로 각각  plot을 그려 여러 개의 bar plot을 그리는 방법

  • stacked bar plot
    각 그룹을 같은 범주끼리 쌓아준다
    쌓는 순서를 같게 유지하고 수량을 annotation을 달아주는 것이 효과적이다.
    .bar(bottom='')
    .barh(left='')​

    로 구현한다.
  •  Overlapped Bar Plot
    2개의 그룹을 투명도를 조절해서 비교를 쉽게 한다.
    3개 이상의 그룹에서 잘 안 보인다.
    .bar(alpha='')​



  •  Grouped Bar plot
    그룹별 범주에 따른 bar를 이웃되게 배치한다.
    .set_xticks()
    .set_xticklabels()​
    matplotlib에서는 수치형으로 구현이 더 쉬워서 비교적 구현이 까다롭다.
    값이 많지 않은 나머지를 모아서 etc로 처리하는 방법도 있다.

Bar Plot 사용법

  • y축의 시작은 0이어야 한다.
    중간부터 자르면 정확한 비교가 어렵다.
  • 정렬하기
    pd.sort_values()
    pd.sort_index()​
    시간, 크기순, 범주의 순서 등에 따라서 정렬하여 plot하는 것이 좋다.
  • 적절한 공간 활용
    .set_xlim(), .set_ylim()
    .spines[spine], .set_visible()
    width
    .legend()
    .margins()​
    으로 여백과 디자인을 조정하면 가독성이 좋아진다.
  • 불필요한 화려함
    3D, 너무 화려한 infograpic은 지양하는 것이 좋다.

    디테일한 것들에서 오는 복잡함을 최소화해서 단순하고 깔끔하게 시각화하자.
    .grid()
    .set_ticklabels()
    .text()
    .annotate()​
  • text 활용
    제목, 라벨, text, annotation을 적절히 잘 이용해서
    해당 plot의 목적을 표현하자
    .set_title()
    .set_xlabel(), .set_ylabel()​