Bar plot

.bar() .barh()

Bar plot이란 직사각형 막대를 사용하여 데이터의 값을 표현하는 차트/ 그래프를 뜻한다.
범주에 따른 수치 값을 비교하기에 적합한 방법이다.

bar plot의 형태

  • Bar Plot에서는 범주에 대해 각 값을 표현 -> 즉, 1개의 feature에 대해서만 보여준다.
  • 한 개의 플롯에 동시에 나타내는 방법은 여러가지가 있다.
    • 쌓아서 표현하기
    • 겹쳐서 표현하기
    • 이웃에 배치하여 표현하기

주의할 점

  • 반드시 x축의 시작은 zero(0)여야 한다. 이는 area plot, Donut chart 등에서의 다수의 시각화에서 적용된다.
    0이 아니면 가독성 자체는 좋아보일 수 있어도, 값의 인지에 방해되기 때문이다.
  • 더 정확한 정보를 전달하기 위해 정렬한 후에 시각화한다.

Matplotlib techniques

  • X/Y axis Limit (.set_xlim(), .set_ylime())
  • Spines (.spines[spine].set_visible())
  • Gap (width)
  • Legend (.legend())
  • Margins (.margins())
  • Grid (.grid())
  • Ticklabels (.set_ticklabels())
  • Text를 추가하기 (.text() or .annotate())
  • .hist()를 사용하여 히스토그램을 만들 수 있다. 이는 연속된 느낌을 줄 수 있다.
  • 제목 붙이기(.set_title())
  • 라벨 붙이기(.set_xlabel(), .set_ylabel())
  • 오차 막대를 추가하여 Uncertainty 정보를 추가할 수 있다(errorbar)

ETC

  • 여백과 공간을 조정하면 가독성이 높아진다.
  • 단순화시키는 것이 가독성이 좋다. (무의미한 3D는 사용하지 않기, 직사각형이 아닌 bar는 지양하기)

Line plot

Line Plot

.plot()

Line Plot은 연속적으로 변화하는 값을 순서대로 점으로 나타낸다.

  • 5개 이하의 선을 사용하는 것을 추천, 더 많은 선은 중첩으로 인한 가독성 하락

  • 여러 개의 선을 구별하는 요소

    • 색상
    • 마커
    • 선의 종류
  • 규칙적인 간격이 아니라면 오해를 줄 수 있다. 따라서 규칙적인 간격의 데이터가 아니라면, 각 관측 값에 점으로 표시하며 오해를 줄이자.

보간

점과 점 사이에 데이터가 없기에 이를 잇는 방법

  • 데이터의 error나 noise가 포함되어 있는 경우, 데이터의 이해를 돕는 방법
    • Moving Average
    • Smooth Curve with Scipy
      • scipy.interpolate.make_interp_spline()
      • scipy.interpolate.interp1d()
      • scipy.ndimage.gaussian_filter1d()

이중 축

  • 한 plot에 대해 2개의 축을 이중 축(dual axis)라고 한다. 같은 시간 축에 서로 다른 두 종류의 데이터를 표현하기 위해서는 축이 두 개가 필요하다 (.twinx() 사용)

  • 한 데이터에 대해 다른 단위(ex. radian, degree)로는 .secondary_xaxis(), .secondary_yaxis()를 사용한다

  • 이중 축은 지양할 것

ETC

  • 라인 끝단에 레이블을 추가하면 식별에 도움이 된다.
  • Min/Max 정보(또는 원하는 포인트)는 추가해주면 도움이 될 수 있음 (annatation,)
  • 보다 연한 색을 사용하여 uncertainty 표현 가능 (신뢰구간, 분산 등)

Scatter Plot

.scatter()

Scatter plot은 점을 사용하여 두 feature간의 관계를 알기 위해 사용하는 그래프

점에서 다양한 variation을 사용할 수 있다.(색, 모양, 크기)

Scatter plot의 목적

  • 상관관계를 확인하기 위해(양의 상관관계라면 y=xy = x의 형태를, 음의 상관관계라면 y=xy = -x의 형태를 띈다)
  • 군집, 값사이의 차이, 이상치 등을 확인하기 위해서

주의할 점

  • 각 점 하나는 데이터 하나를 의미하는데, 점이 많아질 수록 점의 분포를 파악하기 힘들다. 이럴 땐, 투명도 조정, jittering, 2차원 히스토그램, Contour plot 등으로 해결할 수 있다
    • 투명도 조정 : 점의 분포가 밀집되어있을 때 진하게 하는 등
    • jittering : 점의 위치를 약간씩 변경, jittering보다 효율적인 방법이 많다
    • 2차원 히스토그램 : heatmap 방식으로 깔끔하게 시각화할 수 있다.
    • Contour plot : 분포를 등고선을 사용해 표현한다.
  • 색과 마커와 크기를 사용하는 것에 주의해야 한다.
    • 색상은 값을 바로 구분을 할 수 있다.
    • 하지만 마커와 같은 경우에는 구별이 매우 힘들기 때문에 마커"만" 사용하는 것은 추천하지 않는다. 또한 마커는 모양마다 크기가 고르지 않아 인지하기 힘들다.
    • 점의 크기를 사용하는 것을 흔히 버블 차트라고 부른다, 하지만 버블차트는 구별하기 쉽지만 오용하기 쉽다.
      • 버블 차트는 관계를 나타내는 것 보다는, 각 점간의 비율, 이산적인 값들을 비교하는 것에 유용하게 사용할 수 있다.
  • 인과 관계와 상관 관계는 다른 뜻이다
    • 분석 과정에서 꼭 고민해보아야 한다.

ETC

  • 추세선을 사용하면 scatter의 패턴을 유추할 수 있다.
  • Grid는 지양하나, 사용해야 한다면 최소한으로 하는 것이 좋다.
  • 범주형이 포함된 관계에서는 heatmap 또는 버블 차트를 사용하는 것이 좋다.

0개의 댓글

관련 채용 정보

Powered by GraphCDN, the GraphQL CDN