[Visualization] Visualization 2
Visualization2
- 학습 목표 1. 목적에 따라 시각화를 선택하고 사용할 수 있다.
- 학습 목표 2. 시각화 결과를 효과적으로 수용할 수 있다.
Text
Matplot의 Text
Text in Visualization
- 잘못된 전달에서 생기는 오해를 방지 할 수 있다.
- 시각적인 표현에서도 줄 수 없는 설명을 추가할 수 있다.
- 하지만 너무 많은 Text의 사용은 부작용을 발생 시킬 수 있다.
Anatomy of fitting
- Title : 가장 큰 주제를 설명
- Label : 축에 해당하는 데이터 정보를 제공
- Tick Label : 축에 눈금을 사용하여 스케일 정보를 추가
- Legend : 한 그래프에서 2개 이상의 서로 다른 데이터를 분류하기 위해서 사용하는 보조 정보
- Annotation : 그 외의 시각화에 대한 설명을 추가.(화살표등 표 내에서 사용)
box관련 참고자료
Color
Color에 대한 이해
색이 중요한 이유
- 위치와 색은 가장 효과적인 채널 구분
- 다른 요소보다 효과적으로 표현을 할 수 있다.
화려함은 시각화의 전부가 아니다
- 심미적으로 화려한 것은 매력적이지만 시각화의 일부 요소인것 잊지말자
- 가장 중요한 것은 인사이트를 추출해 전달하는 것이다.
색의 의미
- 색은 많은 의미를 실생할에서 이미 많이 사용하고 있다.
- 높은 온도는 빨강, 낮은 온도는 파랑
- 신호등 색상, 카카오, 네이버 마크 색상.
- 기본 정보의 느낌을 전달하는 것이 중요하다.
Color palette의 종류 (색 매칭)
범주형(Categorical)
- 독립된 색상으로 구성되어 범주형 변수에 사용된다.
- 색의 차이로 구분하는 것이 특징이다.
- 너무 많은 색을 사용하는 것은 비효율 적이다.
연속형
- 연속적인 생상을 사용하여 값을 표현
- 색상은 단일 색조로 표현하는 것이 좋고,
- 서서히 변하는 것이 좋다.(순서)
- ex) github commit log
발산형(Diverge)
- 연속형과 유사하지만 중앙을 기준으로 상반된 색을 사용한다.
- 양 끝으로 갈수록 진해진다.
색 Tips!
강조, 색상 대비
- 데이터의 다름을 보이기 위해 Highlighting
- 강조를 위한 방법 중 하나. 색상 대비(Color Contrast) 사용
- 명도 대비 : 밝은색과 어두운 색을 같이 배치하면 밝은색은 더 밝게, 어두운 색은 더 어둡게 보인다.
- 색상 대비 : 가까운 색은 차이가 더 크게보인다.
- 채도 대비 : 채도가 더 높아보인다.(좀 더 선명해 보인다.)
- 보색 대비 : 정반대 색상을 사용하면 더 선명하게 표현할 수 있다. (보색: 합쳐질 때 무채색 되는 색
색각 이상
- 삼원색 중 특정색을 감지못하면 색맹
- 일부 인지 이상이 있으면 색약
- 색약, 색맹과 관련없는 색상 고려가 필수!
색상 더 이해하기
- Hue(색조) : 빨강, 파랑, 초록 등 색상으로 생각하는 부분
- 빨강에서 보라색까지 있는 스펙트럼에서 0-360으로 표현
- Saturate(채도) : 무채색과의 차이
- 선명도라고 볼 수 있음 (선명하다와 탁하다.)
- Lightness(광도) : 색상의 밝기
참고 자료
color api github Topic color-palette 조금더 자세히 github R에서 사용되는 visualization에 중요한 색상 adobe color
Facet
Multiple View
- Facet이란 분할을 의미합니다.
- 화면 상에 View를 분할 및 추가하여 다양한 관점을 전달
- 같은 데이터셋에 서로다른 인코딩으로 다른 인사이트를 전달
- 같은 방법으로 동시에 여러개의 feature를 전달
- 부분 집합을 세세하게 보여줄 수 있다.
Matplotlib 구현
Figure와 Axes
- Figure는 큰 틀이고, Ax는 플롯이 들어가는 공간
NXM subplots
- 쉬운 3가지 방법
- subplot()
- figure() + fig.add_subplot()
- subplots()
- 쉽게 조정할 수 있는 요소
- figuresize
- dpi (Dots per Inch) (해상도)
- sharex, sharey
- squeeze
- aspect
Grid Spec
- subplots 을 다른 슬라이싱으로 어떻게 표현하는가
- slicing 사용 fig.add_grid_spec() 사용
- x, y, dx, dy를 사용 fig.subplot2grid() 사용
- Ax 내부에 서브플롯을 추가 ax.inset_axes() 사용
- 그리드를 사용하지 않고 사이드에 추가 make_axes_locatable(ax) 사용
꿀 Tips
Grid
격자를 어떻게 더 잘 사용할까?
Default Grid
- 기본 Grid는 축과 평행한 선을 사용하여 값 정보들을 보조적으로 제공한다.
- 다른 표현을 방해하지 않기위해 무채색을 사용
- X축, Y축 각각 사용가능하며 동시에도 사용 가능.
여러 형태의 Grid
- 두 변수의 합이 중요하면 x+y=c
- 비율이 중요하다면 y=cx
- 곱이 중요하다면 xy=c
- 특정 데이터 중심으로 보고 싶다면 (x-x’)^2 + (y-y’)^2 = c
- 재밌는 포켓몬스터 강의
심플한 처리
어렵지 않게 정보의 양을 늘이는 방법.
선 추가하기
fig, ax = plt.subplots()
ax.set_aspect(1)
ax.axvline(0, color='red')
ax.axhline(0, color='green')
ax.set_xlim(-1, 1)
ax.set_ylim(-0.5, 1)
plt.show()
axvline 과 axhline을 사용하여 figure에 선을 추가할 수 있다.
면 추가하기
fig, ax = plt.subplots()
ax.set_aspect(1)
ax.axvspan(0,0.5, color='red')
ax.axhspan(0,0.5, color='green')
ax.set_xlim(-1, 1)
ax.set_ylim(-1, 1)
plt.show()
axvspan 과 axhspan을 사용하여 figure에 면을 추가할 수 있다.
Setting 바꾸기
matplot setting 테마라는 것이 존재하기 때문에 상황에 따라 바꾸어 편하게 사용 가능하다. ex) fivethirtyeight, ggplot
- plt.rc(mpl.rc)를 사용하여 matplotlib의 기본 설정을 변경 할 수 있다.
# 기본 세팅을 변경 가능하다.
plt.rcParams['lines.linewidth'] = 2
plt.rcParams['lines.linestyle'] = ':'
plt.rcParams['figure.dpi'] = 150
# 기본 세팅으로 리셋한다.
plt.rcParams.update(plt.rcParamsDefault)
# theme 을 사용하여 스타일을 변경 하고 싶을때
mpl.style.use('seaborn')
# 한 그래프에 대해서만 스타일을 사용하고 싶을 때
with plt.style.context('fivethirtyeight'):
plt.plot(np.sin(np.linspace(0, 2 * np.pi)))
plt.show()
Seaborn
파이썬 데이터분석에서 꼭 다룬다는 Seaborn Journal - seaborn
Seaborn 이란?
- Matplotlib 기반 통계 시각화 라이브러리
- 통계정보, Matplotlib으로 커스텀 가능
- 쉬운 문법과, 깔끔한 디자인!!
- 세련된 시각화 커스텀
- 다양한 API를 분류하여 제공하고 있음
Comments