Notice
Recent Posts
Recent Comments
Link
250x250
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
Tags
- AI 경진대회
- AI Math
- Bert
- Bart
- mrc
- 데이터 구축
- seaborn
- Ai
- RNN
- Optimization
- N21
- 데이터 시각화
- pyTorch
- Transformer
- Attention
- 현대자동차
- word2vec
- passage retrieval
- Self-attention
- Data Viz
- matplotlib
- KLUE
- 기아
- GPT
- nlp
- ODQA
- dataset
- 2023 현대차·기아 CTO AI 경진대회
- 딥러닝
- N2N
Archives
- Today
- Total
쉬엄쉬엄블로그
(Data Viz) Bar Plot 본문
728x90
이 색깔은 주석이라 무시하셔도 됩니다.
기본 Bar Plot
Bar plot이란?
- Bar plot이란 직사각형 막대를 사용하여 데이터의 값을 표현하는 차트/그래프
- 막대그래프, bar chart, bar graph 등의 이름으로 사용됨
- 범주(category)에 따른 수치 값을 비교하기에 적합한 방법
- 개별 비교, 그룹 비교 모두 적합
- 막대의 방향에 따른 분류 (.bar() / .barh())
- 수직(vertical) : x축에 범주, y축에 값을 표기. (default)
- 수평(horizontal) : y축에 범주, x축에 값을 표기. (범주가 많을 때 적합)
다양한 Bar Plot
Raw Data
- 임의의 그룹 데이터를 시각화해 보자
- A, B, C, D, E 데이터가 2 그룹에 존재
- Group Sky : [1, 2, 3, 4, 3]
- Group Pink : [4, 3, 2, 5, 1]
Multiple Bar Plot
- Bar Plot에서는 범주에 대해 각 값을 표현 → 즉 1개의 feature에 대해서만 보여줌
- 여러 Group을 보여주기 위해서는 여러 가지 방법이 필요
- 플롯을 여러 개 그리는 방법
- 한 개의 플롯에 동시에 나타내는 방법
- 쌓아서 표현하는 방법
- 겹쳐서 표현하는 방법
- 아웃에 배치하여 표현하는 방법
Stacked Bar Plot
- 2개 이상의 그룹을 쌓아서(stack) 표현하는 bar plot
- 각 bar에서 나타나는 그룹의 순서는 항상 유지
- 맨 밑의 bar의 분포는 파악하기 쉽지만
- 그 외의 분포들은 파악하기 어려움
- 2개의 그룹이 positive/negative라면 축 조정 가능
- .bar()에서는 bottom 파라미터를 사용
- .barh()에서는 left 파라미터를 사용
- 응용하여 전체에서 비율을 나타내는 Percentage Stacked Bar Chart가 있음

Overlapped Bar Plot
- 2개 그룹만 비교한다면 겹쳐서 만드는 것도 하나의 선택지
- 3개 이상에서는 파악이 어렵기 때문
- 같은 축을 사용하니 비교가 쉬움
- 투명도를 조정하여 겹치는 부분 파악 (alpha)
- Bar plot보다는 Area plot에서 더 효과적
Grouped Bar Plot
- 그룹별 범주에 따른 bar를 이웃되게 배치하는 방법
- Matplotlib으로는 비교적 구현이 까다로움
- 적당한 테크닉 (.set_xticks(), .set_xticklabels())
- 앞서 소개한 내용 모두 그룹이 5개~7개 이하일 때 효과적
- 그룹이 많다면 적은 그룹은 ETC로 처리
정확한 Bar Plot
Principle of Proportion Ink
- 실제 값과 그에 표현되는 그래픽으로 표현되는 잉크 양은 비례해야 함
- 반드시 x축의 시작은 zero(0)
- 만약 차이를 나타내고 싶다면 plot의 세로 비율을 늘리기
- 막대그래프에만 한정되는 원칙은 아님
- Area plot, Donut Char 등등 다수의 시각화에서 적용됨
데이터 정렬하기
- 더 정확한 정보를 전달하기 위해서는 정렬이 필수
- Pandas에서는 sort_values(), sort_index()를 사용하여 정렬
- 데이터의 종류에 따라 다음 기준으로
- 시계열 | 시간순
- 수치형 | 크기순
- 순서형 | 범주의 순서대로
- 명목형 | 범주의 값 따라 정렬
- 여러 가지 기준으로 정렬을 하여 패턴 발견
- 대시보드에서는 Interactive로 제공하는 것이 유용
적절한 공간 활용
- 여백과 공간만 조정해도 가독성이 높아진다.
- Matplotlib의 bar plot은 ax에 꽉 차서 살짝 답답
- Matplotlib techniques.
- X/Y axis Limit (.set_xlim(), .set_ylime())
- Spines (.spines[spine].set_visible())
- Gap (width)
- Legend (.legend())
- Margins (.margins())
복잡함과 단순함
- 필요 없는 복잡함은 NO
- 무의미한 3D는 Never
- 직사각형이 아닌 다른 형태의 bar는 지양
- 무엇을 보고 싶은가? (시각화를 보는 대상이 누구인가?)
- 정확한 차이 (EDA)
- 큰 틀에서 비교 및 추세 파악 (Dashboard)
- 축과 디테일 등의 복잡함
- Grid (.grid())
- Ticklabels (.set_ticklabels())
- Major & Minor
- Text를 어디에 어떻게 추가할 것인가 (.text() or .annotate())
- Bar의 middle / upper
ETC
- 오차 막대를 추가하여 Uncertainty 정보를 추가 가능 (errorbar)
- Bar 사이 Gap이 0이라면 → 히스토그램(Histogram)
- .hist()를 사용하여 가능
- 연속된 느낌을 줄 수 있음
- 다양한 Text 정보 활용하기
- 제목 (.set_title())
- 라벨 (.set_xlabel(), .set_ylabel())
출처: 부스트캠프 AI Tech 4기(NAVER Connect Foundation)
'부스트캠프 AI Tech 4기' 카테고리의 다른 글
| (Data Viz) Line Plot (0) | 2023.06.10 |
|---|---|
| (Data Viz) Bar Plot 실습 (4) | 2023.06.09 |
| (Data Viz) Python과 Matplotlib (0) | 2023.06.07 |
| (Data Viz) 시각화의 요소 상태 (2) | 2023.06.06 |
| (딥러닝) Generative Models - 2 (0) | 2023.06.05 |
Comments