6 minute read

Visualization2

  • 학습 목표 1. 목적에 따라 시각화를 선택하고 사용할 수 있다.
  • 학습 목표 2. 시각화 결과를 효과적으로 수용할 수 있다.

Text

Matplot의 Text

Text in Visualization

  • 잘못된 전달에서 생기는 오해를 방지 할 수 있다.
  • 시각적인 표현에서도 줄 수 없는 설명을 추가할 수 있다.
  • 하지만 너무 많은 Text의 사용은 부작용을 발생 시킬 수 있다.

Anatomy of fitting

plot

  • Title : 가장 큰 주제를 설명
  • Label : 축에 해당하는 데이터 정보를 제공
  • Tick Label : 축에 눈금을 사용하여 스케일 정보를 추가
  • Legend : 한 그래프에서 2개 이상의 서로 다른 데이터를 분류하기 위해서 사용하는 보조 정보
  • Annotation : 그 외의 시각화에 대한 설명을 추가.(화살표등 표 내에서 사용)

box관련 참고자료

box drawing bbox_to_anchor

Color

Color에 대한 이해

색이 중요한 이유

  • 위치와 은 가장 효과적인 채널 구분
  • 다른 요소보다 효과적으로 표현을 할 수 있다.

화려함은 시각화의 전부가 아니다

  • 심미적으로 화려한 것은 매력적이지만 시각화의 일부 요소인것 잊지말자
  • 가장 중요한 것은 인사이트를 추출해 전달하는 것이다.

색의 의미

  • 색은 많은 의미를 실생할에서 이미 많이 사용하고 있다.
  • 높은 온도는 빨강, 낮은 온도는 파랑
  • 신호등 색상, 카카오, 네이버 마크 색상.
  • 기본 정보의 느낌을 전달하는 것이 중요하다.

Color palette의 종류 (색 매칭)

범주형(Categorical)

  • 독립된 색상으로 구성되어 범주형 변수에 사용된다.
  • 색의 차이로 구분하는 것이 특징이다.
  • 너무 많은 색을 사용하는 것은 비효율 적이다.

color

연속형

  • 연속적인 생상을 사용하여 값을 표현
  • 색상은 단일 색조로 표현하는 것이 좋고,
  • 서서히 변하는 것이 좋다.(순서)
  • ex) github commit log

발산형(Diverge)

  • 연속형과 유사하지만 중앙을 기준으로 상반된 색을 사용한다.
  • 양 끝으로 갈수록 진해진다.

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()

line

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()

span

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를 분류하여 제공하고 있음

Box plot

꿀팁자료

딥러닝 네트워크를 그리는 도구 모음

Comments