newbie.log
로그인
newbie.log
로그인
[BoostCamp AI Tech / Data Viz] (2-1~3) Bar Plot, Line Plot
newbie
·
2021년 9월 12일
팔로우
0
0
Bar Plot
다양한 Bar plot
stacked bar plot
Overlapped Bar Plot
grouped bar plot
정확한 Bar plot
Line Plot
정확한 line plot
Scatter Plot
정확한 Scatter Plot
[boostcampAI S stage] data visualization
목록 보기
4/6
Bar Plot
직사각형 막대를 사용하여 데이터 값을 표현하는 차트/그래프
범주(category)에 따른 수치 값을 비교(개별 비교, 그룹 비교)
막대 방향 지정
수직(vertical) : .bar(), x축 범주 y축 값(default)
수평(horizontal) : .barh(), x축 값, y축 범주 (범주가 많을 때 적합)
다양한 Bar plot
두 종류의 라벨 데이터에 대한 bar plot
플롯을 여러개 그리기
한 개의 플롯에 동시에 나타내기
쌓아서 표현
겹쳐서 표현(대신 투명도 조정)
이웃에 배치하여 표현
stacked bar plot
2개 이상의 그룹을 쌓아서 표현
맨 밑의 bar 분포는 파악하기 쉽지만 그 외 분포 파악이 조금 어려움
경우 percentage Stacked bar chart로 하면 전체적인 분포를 파악하기 편함
2개의 그룹이 positive/negative면 축 조정 가능
.bar()에서는 bottom을, .barh()에서는 left 파라미터 사용
Overlapped Bar Plot
2개 그룹만 비교한다면 겹쳐서 만드는 것도 하나의 선택지
3개 이상이면 파악하기 어려움
투명도를 조정하여 겹치는 부분 파악(alpha option)
bar plot보다는 area plot 활용하면 더 효과적(seaborn)
grouped bar plot
그룹별 범주에 따른 bar를 이웃되게 배치
다만, matplotlib으로는 조금 까다로움(seaborn is best!!)
적당한 테크닉(set_xticks(), set_xticklabels())
다만 그룹도 5~7개 이하일 때만 효과적, 그룹이 많으면 적은 그룹은 ETC 그룹으로 처리
정확한 Bar plot
X축의 시작은 반드시 0부터 시작
Area chart, donut chart도 동일
가독성을 높인다고 150~200정도만 나타내면 독자가 오해할 수 있음
y축의 차이를 보여주고 싶으면 figure size 자체를 조정
데이터 정렬
Pandas는 sort_values(), sort_index()
데이터 종류에 따른 기준
시계열 | 시간 순서
수치형 | 크기 순서
순서형 | 범주 순서
명목형 | 범주 값 순서
적절한 공간 활용
여백과 공간만 조정해도 가독성 향상
Matplotlib Technique
X/Y axis Limit(.set_xlim())
Spines(.spines[spine].set_visible())
Gap(width)
Legend(.legend())
Margins(.margins())
복잡함과 단순함
무의미하 복잡함은 기독성 저하
3D를 할 떄는 interactive하게 가동할 수 있도록
가능하면 2D로
정확한 EDA 를 통한 데이터 시각화
큰 틀에서 비교 및 추세 파악 시 Dashboard 활용
Line Plot
선 그래프
시간/순서에 대한 변화에 적합하여 추세를 살피는 용도
시계열 분석에 특화
.plot()
다섯개 이하의 선을 사용하는 것을 추천
중첩으로 인해 가독성 저하
색상(color),마커(maker, makersize), 선의 종류(linestyle, lindwidth)
시계열 데이터는 노이즈로 인해 패턴 및 추세 파악이 어려운데, Noise의 인지적 방해를 줄이기 위해 smoothing(e.g. moving average) 사용
정확한 line plot
bar plot과 다르게 축을 꼭 0에 초점을 둘 필요는 없음
너무 구체적이면 오히려 가독성 저하
grid, annotate 등 불필요하면 제거(다만 상황에 따라 다름)
디테일한 정보는 표로..
생략되지 않는 선에서 범위 조정(.set_ylim())
간격에 따라 독자가 받아들이기에 오해할 수 있으므로 관측값에 대해 marker를 사용하는 것도 좋음
보간 : 점과 점 사이에 데이터가 없기에 이를 잇는 방법
Moving average
smooth curve with Scipy
scipy.interplate.make_interp_spine()
scipy.interpolate.interp1d()
scipy.ndimage.gaussian_filter1d()
presentation에는 좋으나, 없는 데이터를 생성해주는 것이므로
일반적인 분석에서는 지양
이중 축(dual axis)
같은 시간 축 + 다른 종류의 데이터
.twinx()
한 데이터에 다른 단위(radian, degree)
.secondary_xaxis(), .secondary_yaxis()
단, 두 그래프를 같이 그리면 상관관계가 있어보이므로, 가능하면 이중 축보단 두 그래프로 그리는 것이 가독성이 향상
annotate나 text를 활용하여 legend, 그래프의 point를 지정해주면 가독성이 향상
Scatter Plot
점을 사용하여 두 feature 관계를 알기 위해 사용
산점도
.scatter()
variation을 활용하여 5차원까지 시각화 가능
색(color),모양(marker), 크기(size) 조정
목적 : 상관관계 확인
정확한 Scatter Plot
점이 많아질수록 분포 파악이 어려움
투명도 조정(alpha)
지터링(jittering): 점의 위치를 약간씩 변경
2차원 히스토그램: 히트맵을 사용하여 시각화
contour plot: 분포를 등고선으로 사용
점의 요소와 인지
색 : 연속은 gradient, 이산은 개별 색상으로
마커 : 거의 구별이 어려움 + 크기가 고르지 않음
크기 :
흔히 버블 차트(bubble chart)라고 부르는데, 구별하기 쉬지만 오용이 쉬움
관계보다는 가 점간 비율에 초점
SWOT 분석 등에 활용 가능
인과 관계와 상관 관계는 다름!!
scatter plot과 grid는 잘 어울리지는 않음
사용할 경우 최소환으로만, 색은 무채색으로
범주형이 포함된 관계에서는 heatmap이나 bubble chart
newbie
DL, NLP Engineer to be....
팔로우
이전 포스트
[BoostCamp AI Tech / Data Viz] (1-3) Factors of visualization
다음 포스트
[BoostCamp AI Tech / Data Viz] (3-1) Text, Color, Facet, More Tips
0개의 댓글
댓글 작성
관련 채용 정보
아데나소프트웨어
Node.js 개발자 (3년이상)
핀테크 혁신의 중심, ADENA에서 서버 사이드 어플리케이션과 RESTful API 개발에 도전해보세요! NestJS 경험이 있는 당신을 위해 글로벌 금융 파트너와 함께 무한한 가능성을 열어갈 기회를 제공합니다.
에이핀아이앤씨
NODE.JS 개발자
핀테크 서비스 포트폴리오를 가진 회사에서 Node.js 기반 웹 서버 설계 및 개발 업무를 맡을 기회를 제공합니다. 유연근무제와 수평적 조직문화로, 기술적 성장과 다양한 프로젝트 경험을 쌓을 수 있습니다.
넥스트에디션
백엔드(Node.js) 개발자
캠핏과 함께 아웃도어 라이프의 새로운 길을 열어보세요! Node.js 백엔드 개발자로서 서비스 데이터 파이프라인 구축과 DevOps 빌딩에 참여하며, 자율근무제와 캠핑 지원 혜택을 누릴 수 있습니다.