네이버 부스트캠프 AI Tech 2기

[08.09 Special 강의] Introduction to Visualization 🤓

Jay x 2 2021. 8. 13. 19:34
728x90
반응형

📊 시각화 소개

[수업 내용]

강사 : 안수빈 강사님

데이터 시각화 : 데이터를 그래픽 요소로 매핑하여 시각적으로 표현하는 것

아래의 6가지 요소들을 생각하면서 시각화를 적용하는 것이 중요하다고 하셨다.

  1. 목적 : 왜 시각화를 하는가?
  2. 독자 : 시각화 결과는 누구를 위한 것인가?
  3. 데이터 : 어떤 데이터를 시각화 할 것인가?
  4. 스토리 : 어떤 흐름으로 인사이트를 전달할 것인가?
  5. 방법 : 전달하고자 하는 내용에 맞게 효과적인 방법을 사용하고 있나?
  6. 디자인 : UI에서 만족스러운 디자인을 가지고 있는가?

시각화는 Score가 존재하지 않는다!

연구에서의 시각화 ≠ 개발에서의 시각화, 이론 ≠ 소비자

→ 여러가지 모범 사례를 보면서 좋은 시각화가 무엇인지 알려주신다.

👀 [시각화의 요소]

  1. 데이터를 이해한다.
  2. 시각화를 이해한다.

당연하지만, 데이터 시각화를 위해서는 데이터가 필수!

어떻게 시각화할까? → 관점에 차이

  1. 데이터 개별적으로 보여줄 것인가(Local)
  2. 데이터 셋 관점으로 보여줄 것인가(Global)

💿 데이터셋 종류들

  • 정형 데이터가장 쉽게 시각화할 수 있는 데이터셋이다.
    1. 통계적 특성과 feature사이 관계
    2. 데이터 간 관계
    3. 데이터 간 비교
  • : 일반적으로 csv, tsv 파일로 제공된다. Row가 데이터 1개, Column은 attribute를 나타낸다.
  • 시계열 데이터
    • 추세, 계절성, 주기성 등을 살핀다.
  • : 시간의 흐름에 따른 데이터. (기온, 주가 등 정형데이터 / 음성, 비디오 같은 비정형 데이터)
  • 지리 데이터
  • : 지도 정보와 보고자 하는 정보 간의 조화가 중요하며 지도 정보를 단순화 시키는 경우도 존재한다.(거리, 경로, 분포 등)
  • 관계(네트워크) 데이터→ 객체는 노드, 관계는 Link로 표시한다. (크기, 색, 수 등을 활용해 객체와 관계의 가중치를 표현한다.)
  • 휴리스틱하게 노드 배치를 구성한다.
  • : Graph, 객체와 객체사이의 관계를 시각화할 때 사용한다.
  • 계층적 데이터→ Tree, Treemap, Sunburst 등이 대표적이다.
  • : 과계 중에서 포함관계가 분명한 데이터 (네트워크 시각화로도 표현 가능하다.)
  • 다양한 비정형 데이터

이런 데이터를 더 세부적으로 살펴보면 4가지로 분류된다.

  1. 수치형(Numeric)
    • 연속형(Continuous) : 길이, 무게, 온도 등
    • 이산형(Discrete) : 주사위 눈금, 사람 수 등
  2. 범주형(Categorial)
    • 명목형(Nominal) : 혈액형, 종교 등
    • 순서형(Ordinal) : 학년, 별점, 등급 등

시각화 이해

  1. Mark를 통해서 시각화 한다. (점, 선, 면 으로 이루어진 데이터 시각화)
  2. Channel(각 마크를 변경할 수 있는 요소들 ex. Position, Size, Shape, Color, Volume, Tilt 등)

전주의적 속성(Pre-attentive Attribute)

: 주의를 주지 않아도 인지하게 되는 요소(Length, Size, Color, Width 등등), 동시에 사용하면 인지하기 어렵기 때문에, 적절하게 사용할 때 시각적으로 분리된다.(visual pop-out)

🔵 Python & Matplotlip

Matplotlib이란? → Python에서 사용할 수 있는 시각화 라이브러리이다.

numpy, scipy를 베이스로하여 다양한 라이브러리와 호환성이 좋다.

  • Scikit-Learn, PyTorch, Tensorflow
  • Pandas

막대그래프, 선그래프, 산점도 등등 지원한다.

(Seaborn, Plotly, Bokeh, Altair 등 시각화 라이브러리가 존재한다.)

import matplotlib as mpl #Matplotlib 라이브러리 호출
import matplotlib.pyplot as plt #pyplot 모듈 호출

기본적인 Plot들

matplotlib에서 그리는 시각화는 Figure라는 큰 틀에 Ax라는 서브플롯을 추가해서 만든다.

fig = plt.figure(figsize = ('가로(인치)', '세로(인치)')) #fig 사이즈를 조절해서 키기를 조절할 수 있다.
plt.show() #fig에 나타난 그래프를 그려라!

여기에 서브플롯을 1개 이상 추가해야 그려지게 된다.(대략 100개정도 그릴 수 있다.)

Subplot추가

fig = plt.figure()
ax = fig.add_subplot()
plt.show()
#한개의 subplot이 fig에 추가가되어 그려진다.(파레트가)

fig = plt.figure()
ax = fig.add_subplot(1,2,1)
#세로를 1개로 나누고, 가로를 2개로 나누고 ,Number 1 칸에 추가
ax = fig.add_subplot(1,2,2)
#세로를 1개로 나누고, 가로를 2개로 나누고 ,Number 2 칸에 추가
plt.show()

plt로 그래프 그리기

  • 선 한개 그리기
x = [1,2,3] #리스트를 그래프로 그리는 방법

#plot이라는 함수가 선그래프를 그린다.
fig = plt.figure()
ax = fig.add_subplot()
x = [1,2,3]

plt.plot(x) -> 선그래프를 그리는 함수
plt.show()
  • 여러개 그리기
  1. Pyplot API : 순차적 방법
  2. 객체지향 API : 그래프에서 각 객체에 대해 직접적으로 수정하는 방법
fig = plt.figure()
x1 = [1,2,3]
x2 = [4,5,6]

ax1 = fig.add_subplot(2,1,1)
ax2 = fig.add_subplot(2,1,2)

ax1.plot(x1)
ax2.plot(x2)
plt.show()

Plot 요소들 알아보기

  1. 색상

    • 생상은 Default로 지정되어 있다.(파랑, 주황, 초록 .. ) 단, 다른 종류의 그래프가 추가되면 파란색으로 다시 시작한다.

        #색 지정하기
        ax.plot([1,1,1], color='r') #한 글자로 정하는 색
        ax.plot([1,1,1], color='forestgreen') #색의 이름으로
        ax.plot([3,3,3], color='#000000') #hex code
  2. 텍스트

    • 정보를 추가하기 위해서 텍스트를 사용한다.

        #Label
        ax.plot([1,1,1], label='1')
        ax.legend() #범례를 추가해야 시각화에 드러난다.
      
        #Title
        ax = fig.addsubplot()
        ax.set_title('그래프 그리기') 
        #ax 라는 subplot에 추가한 제목
      
        fig.suptitle('전체 제목')
        #전체 제목 설정(가장 큰틀의 타이틀)
    • 축에 적히는 scale : ticks

    • 축에 적히는 text : ticklabels

        ax.set_xticks([0,1,2]) #x축의 scale을 지정한다.
        ax.set_xticklabels(['zero','one','two']) #이름 바꾸기
      
        ax.text(x좌표, y좌표, s='이것이 텍스트를 입력하는 함수') #원하는 위치에 Text를 적어줌.
        ax.annotate(text='annotate로 지정', xy = (x좌표, y좌표)
                                ,xytext(x좌표, y좌표)
                                ,arrowprops=dict(facecolor='색상')) #원하는 위치의 포인트에 적어주는 것, arrowprops로 화살표도 추가 가능
반응형