AAT_Phase 1.Visualization of data using matplotlib

'졸업작품 (AAT)' 시리즈AAT_Phase 1.Visualization of data using matplotlib

mildsalmon

흔치않고, 진귀하다.

Sign in to view email

공부를 통해 새로 알게된 부분

  • matplotlib은 파이썬에서 2차원 그래프를 그릴 때 사용.

    • pyplot 모듈은 매트랩과 비슷한 형태로 그래프를 그리는 기능 제공

      • plot → 라인 플룻을 그리는 함수

          문자  색상
          b  blue(파란색)
          g  green(녹색)
          r  red(빨간색)
          c  cyan(청록색)
          m  magenta(마젠타색)
          y  yellow(노란색)
          k  black(검은색)
          w  white(흰색)
        
          마커  의미
          o  circle(원)
          v  triangle_down(역 삼각형)
          ^  triangle_up(삼각형)
          s  square(네모)
          +  plus(플러스)
          .  point(점)
        • label 인자를 통해 라벨 지정 → label을 통해 전달하는 문자열이 범례에 표시

        • 범례는 legend 함수를 통해 추가

        • loc 인자로 범례 표시 위치 지정.

          Location String Location Code ‘best’ 0 ‘upper right’ 1 ‘upper left’ 2 ‘lower left’ 3 ‘lower right’ 4 ‘right’ 5 ‘center left’ 6 ‘center right’ 7 ‘lower center’ 8 ‘upper center’ 9 ‘center’ 10

      • .show() → 출력함수

        • 한 객체당 show는 한번
      • add_subplot → 한 화면에 여러 개의 그래프 그리기 (ax = fig.add_subplot(2,1,1))

        • figure 함수로 Figure 객체 만들어야함.
        • subplot의 개수 = add_subplot 메서드의 인자를 통해 조정
          • (2, 1, 1)은 2x1행렬 중 1번 subplot
        • add_subplot 메서드 호출하면 AxesSubplot 객체 생성
          • Axes는 하나의 subplot과 유사한 개념
        • ax.plot(x,y) , ax.bar(x,y) → plot 함수 (선) , bar 함수 (막대) 를 호출해서 그래프를 그림
        • Axes 객체는 set_xlabel, set_ylabel 메서드를 통해 x축과 y축에 라벨 설정
      • matplotlib의 Figure 객체의 구성

        • matplotlib로 그래프를 그리려면 Figure 객체와 하나 이상의 subplot(Axes) 객체 필요
          • Axes 객체는 두 개의 Axis 객체 포함
            • Axis 객체는 x축, y축
        • 인자값 → figsize=(12,8)로 Figure 객체의 크기 조정
      • Figure 객체 생성, 이 객체에 여러 개의 AxesSubplot 객체 생성을 한번에 하려면. → plt.subplots 사용 / fig, ax_list = plt.subplots(2,2) → Figure 객체와 2x2 그리드 형태의 AxesSubplot 객체 생성

      • Figure 객체나 AxesSubplot 객체를 명시적으로 생성하지 않고 그래프 그릴 수 있음.

        • plt.plot 함수가 자동으로 가장 최근에 생성된 Figure 객체를 찾고 해당 객체 내의 AxesSubplot에 그래프를 그리기 때문 / Figure, AxesSubplot 객체가 없다면 새로 생성
      • subplot2grid 함수

        • 크기가 서로 다른 두 개의 AxesSubplot 객체 생성
          • 주식 데이터는 높이보다 너비를 길게 설정하는 것이 보기 편리함.
        • subplot의 위치나 크기를 조절할 때 사용
        • 인자값 / 1. 4x4 grid 모양, 2. grid에서 (0, 0) 위치하는 grid를 의미, 3. grid가 행 방향으로 3개만큼 걸침, 4. grid가 열 방향으로 4개만큼 걸침 / top_axes = plt.subplot2grid((4,4), (0,0), rowspan=3, colspan=4)
      • AxesSubplot 객체

        • bottom_axes.get_yaxis().get_major_formatter().set_scientific(False) → 큰 거래량 값이 발생할 때 그 값을 오일러 상수의 지수 형태로 표현되지 않게 해줌
        • .text 함수 → bar 차트의 각 bar에 등락률 데이터 출력
          • 인자값 → 1. text가 출력되는 x축 위치, 2. text가 출력되는 y축 위치, 3. 실제로 표시될 값, ha = 수평 방향으로 정렬, va = 수직 방향으로 정렬
      • .tight_layout() → subplot 들이 Figure 객체의 영역 내에서 자동으로 최대 크기로 출력하게 해주는 함수

      • bar 함수 → 수직 방향 bar 차트

      • barh 함수 → 수평 방향의 bar 차트 (rects)

        • 인자값 → 1. bar가 그려질 위치, 2. 각 bar에 대한 수치, ← 1,2 번은 리스트 형식으로 전달, align = bar 차트에서 bar의 정렬 위치, height = 수평 bar 차트의 높이
        • rect
          • .get_width() = 각 bar의 너비(길이)
          • .get_y() = bar가 출력된 y축 위치
          • .get_height() = bar 높이(세로 길이)
      • yticks(위치, 출력값), xticks(위치, 출력값) 함수로 ticker 표시 가능

      • pie 함수 → pie 차트

        • 인자값 → 1. 각 범주가 데이터에서 차지하는 비율, 2. 범주, shadow = 그림자 설정, startangle = 첫 번째 pie의 시작 각도 / pie 차트를 4사분면으로 나눠서 +x축이 0도, explode = 각 범주에 확대 값 리스트, colors = 지정 색 리스트, autopct = 각 범주가 데이터에서 차지하는 비율 출력.
        • 특정 pie 확대 → 각 범주에 확대 값을 리스트로 전달
    • ticker 모듈 → matplotlib.ticker

      • x축과 y축에 표시되는 값을 ticker라 부름

      • ticker를 설정하려면 ticker의 위치, 위치에서 출력될 값이 필요

      • x축은 날짜를 의미 → x축 ticker

        • set_major_locator → 위치(일정하게 증가하는 정수값)를 설정하는 함수 / set_major_formatter → 출력되는 값(수정할 값 : 날짜)을 설정하는 함수

        • ticker.FixedLocator, ticker.FixedFormatter 은 고정 위치, 고정 포매팅을 의미

          ax.xaxis.set_major_locator(ticker.FixedLocator(day_list)) ax.xaxis.set_major_formatter(ticker.FixedFormatter(name_list))

      • pyplot 모듈의 yticks(위치, 출력값), xticks(위치, 출력값) 함수로 대체 가능

    • font_manager, rc 모듈 → 그래프를 그릴 때 한글 폰트 설정시 사용.

    • style 모듈 → 스타일 변경시 사용

      • 수치 값이 bar 차트에 출력되도록 설정
      • 그래프의 style을 변경하는 코드는 그래프를 출력(.show())하기 전에 수행해야함.
      • 스타일은 ggplot 말고 많음
  • mpl_finance 모듈 —최신—> mplfinance

    • candlestick2_ohlc 함수 → 봉차트
    • Figure 객체, AxesSubplot 객체를 만들고 candlestick2_ohlc 함수 호출
    • 인자값 / 1. AxesSubplot 객체, 2~5. 시가, 고가, 저가, 종가, width = 봉 몸통의 너비 조절, colorup = 양봉 색, colordown = 음봉 색
    • mpl_finance 모듈은 20년 중순쯤 지원이 중단.
    • 최신 버전은 mplfinance는 matplotlib.pyplot이 동시에 지원.
    • 기존 봉 차트를 만들려면 from mplfinance.original_flavor import candlestick2_ohlc
  • Matlab

    • Mathworks에서 개발
    • 공학 및 과학 문제 해결에 최적화된 프로그래밍 환경으로서 다양한 분야에서 사용
    • 공학이나 과학 분야에서 주로 사용되는 프로그래밍 언어
  • sin, cos 그래프의 값의 범위는 실수라서 range 대신 numpy 모듈의 arange 사용

  • 주식 차트

    • 캔들 스틱 차트 (봉 차트)
    • bar 차트 (막대 그래프)
    • pie 차트 (원형 차트)
  • pandas_datareader.data의 Datareader 함수를 통해 얻어온 DataFrame 객체에는 날짜 정보가 저장.

    • .index는 DataFrame 객체 날짜 정보 저장. —type—> <class 'pandas.core.indexes.datetimes.DatetimeIndex'>
    • .index[0]은 디테일한 날짜, 시간정보 저장 —type—> <class 'pandas._libs.tslibs.timestamps.Timestamp'>
      • Pandas의 Timestamp 객체
        • strtime 메서드에 출력 포멧 전달해서 문자열로 변환 가능
        • dayofweek 속성으로 요일을 받아올 수 있음, 0 - 6 → 월 - 일

좀 더 공부해야하는 부분

  • pandas_datareader
  • matplotlib
    • 차트는 꼭 필요한 부분이다. 최소한이라도 공부해서 활용할 줄 알아야 한다.

한줄평

오늘은 모듈 설치하고 실행하는 부분에서 에러가 진짜 많이 발생했다. 책에 나온 모듈이 중단되고 최신 모듈이 나오니 최신 모듈로 사용하라거나. 잘 작동하던 pandas_datareader가 warning을 뱉어내질 않나.. 어찌저찌 해결은 다 했다. mpl_finance 모듈은 최신 버전인 mplfinance를 document를 읽으면서 공부해야 할 듯 하고, pandas_datareader가 뱉어내는 warning은 제작사 측에서 수정을 해줘야한다. 그렇다고 무작정 경고 메세지를 보면서 기다리는건 찝찝해서 임시 방편으로나마 코드를 수정했다. 영어를 진짜 할줄 알아야 한다는 걸 느꼈다. 갑자기 뱉어내는 최신 에러들은 한국어로도 자료가 없다.

오늘 작성한 코드

Learned the matplotlib · mildsalmon/AAT@5e88029

참고자료


'졸업작품 (AAT)' 시리즈
실시간 작업 진행 상황을 Notion page를 통해 확인하실 수 있습니다. (https://www.notion.so/mildsalmon/AAT-34c0c21f8f0a474faf2bbc499dd6d0b3)
작성된 댓글이 없습니다!
로그인된 사용자만 댓글을 작성할 수 있습니다.