데이터분석

33-(1) Matplotlib Visualization - 기본문법

장수우 2024. 1. 14. 23:33
학습 주제
  • 데이터 시각화 - matplotlib
주요 학습 내용
  • 시각화(Visualization)
    • 데이터 분석 결과를 Plot이나 Graph 등을 통해서 시각적으로 전달할 수 있는 방법
    • matplotlib은 다양한 데이터를 많은 방법으로 도식화 할 수 있도록 하는 파이썬 라이브러리
    • matplotlib을 이용하면 numpy나 pandas에서 사용되는 자료구조를 쉽게 시각화 할 수 있다.
  • Matplotlib Visualization
    • Colab이나 Jupyter notebook 상에서
      plt.plot()등의 명령문을 작성 뒤,
      plt.show() 를 통해서 바로 플롯을 보거나
      plt.savefig() 를 통해서 플롯을 파일로 저장
      import matplotlib.pyplot as plt
      
      # 기본 문법
      plt.plot([1, 2, 3], [3, 6, 9])
      plt.plot([1, 2, 3], [2, 4, 9])
      
      plt.show()​
       
    • plt.title(") : 플롯의 타이틀을 작성해준다.
      import matplotlib.pyplot as plt
      
      plt.plot([1, 2, 3], [3, 6, 9])
      plt.plot([1, 2, 3], [2, 4, 9])
      
      # 타이틀 & font 설정
      plt.title('이것은 타이틀 입니다')
      
      plt.show()​
    • plt.xlabel(", fontsize=), plt.ylabel(", fontsize=) : 플롯의 x,y 축 label을 설정
      plt.plot([1, 2, 3], [3, 6, 9])
      plt.plot([1, 2, 3], [2, 4, 9])
      plt.title('Label 설정 예제입니다', fontsize=20)
      
      # X축 & Y축 Label 설정
      plt.xlabel('X축', fontsize=20)
      plt.ylabel('Y축', fontsize=20)
      
      plt.show()​
    • plt.xticks(rotation=), plt.yticks: 플롯의 X축, Y축에 눈금을 그어줍니다
    • plt.legend([‘’,’’,...], fontsize=):앞에서 정의된 각 플롯에 대해서 범례를 설정
      # 범례(Legend) 설정
      plt.plot(np.arange(10), np.arange(10)*2)
      plt.plot(np.arange(10), np.arange(10)**2)
      plt.plot(np.arange(10), np.log(np.arange(10)))
      
      # 타이틀 & font 설정
      plt.title('범례 설정 예제입니다', fontsize=20)
      
      # X축 & Y축 Label 설정
      plt.xlabel('X축', fontsize=20)
      plt.ylabel('Y축', fontsize=20)
      
      # X tick, Y tick 설정
      plt.xticks(rotation=90)
      plt.yticks(rotation=30)
      
      # legend 설정
      plt.legend(['10 * 2', '10 ** 2', 'log'], fontsize=15)
      
      plt.show()​
    • plt.xlim(), plt.ylim(): 플롯의 X축, Y축의 끝값들을 설정해줍니다
      # X와 Y의 한계점(Limit) 설정: xlim(), ylim()
      plt.plot(np.arange(10), np.arange(10)*2)
      plt.plot(np.arange(10), np.arange(10)**2)
      plt.plot(np.arange(10), np.log(np.arange(10)))
      
      # 타이틀 & font 설정
      plt.title('이것은 타이틀 입니다', fontsize=20)
      
      # X축 & Y축 Label 설정
      plt.xlabel('X축', fontsize=20)
      plt.ylabel('Y축', fontsize=20)
      
      # X tick, Y tick 설정
      plt.xticks(rotation=90)
      plt.yticks(rotation=30)
      
      # legend 설정
      plt.legend(['10 * 2', '10 ** 2', 'log'], fontsize=15)
      
      # x, y limit 설정
      plt.xlim(0, 5)
      plt.ylim(0.5, 10)
      
      plt.show()​
    • 선형 그래프나 산점도의 경우 marker나 markersize, linestyle, color, alpha 등을 설정해 각각 점 모양, 
      점 크기, 선 모양, 색깔, 투명도 등을 조절할 수 있다
    • 특히, 산점도에서 color를 label로 주어 label에 따른 분포를 파악하는 것도 가능
      # 마커(marker)
      # '.': point marker
      # 'o': circle marker
      # 'v': triangle_down marker
      # '+': plus marker
      # '*': star marker
      
      plt.plot(np.arange(10), np.arange(10)*2 + 10, marker='.', markersize=10)
      plt.plot(np.arange(10), np.arange(10)*2, marker='o', markersize=10)
      plt.plot(np.arange(10), np.arange(10)*2 - 10, marker='v', markersize=10)
      plt.plot(np.arange(10), np.arange(10)*2 - 20, marker='+', markersize=15)
      plt.plot(np.arange(10), np.arange(10)*2 - 30, marker='*', markersize=20)
      
      # 타이틀 & font 설정
      plt.title('마커 설정 예제', fontsize=20)
      
      # X축 & Y축 Label 설정
      plt.xlabel('X축', fontsize=20)
      plt.ylabel('Y축', fontsize=20)
      
      # X tick, Y tick 설정
      plt.xticks(rotation=90)
      plt.yticks(rotation=30)
      
      plt.show()​
      
      #---------
      # 라인(line)
      # '-': solid line style
      # '--': dashed line style
      # '-.': dash-dot line style
      # ':': dotted line style
      
      plt.plot(np.arange(10), np.arange(10)*2, marker='o', linestyle='')
      plt.plot(np.arange(10), np.arange(10)*2 - 10, marker='o', linestyle='-')
      plt.plot(np.arange(10), np.arange(10)*2 - 20, marker='v', linestyle='--')
      plt.plot(np.arange(10), np.arange(10)*2 - 30, marker='+', linestyle='-.')
      plt.plot(np.arange(10), np.arange(10)*2 - 40, marker='*', linestyle=':')
      
      # 타이틀 & font 설정
      plt.title('다양한 선의 종류 예제', fontsize=20)
      
      # X축 & Y축 Label 설정
      plt.xlabel('X축', fontsize=20)
      plt.ylabel('Y축', fontsize=20)
      
      # X tick, Y tick 설정
      plt.xticks(rotation=90)
      plt.yticks(rotation=30)
      
      plt.show()
      
      #---------------
      # 컬러(color)
      # 'b': blue
      # 'g': green
      # 'r': red
      # 'c': cyan
      # 'm': magenta
      # 'y': yellow
      # 'k': black
      # 'w': white
      # alpha를 통해 투명도를 조절할 수 있습니다.
      
      plt.plot(np.arange(10), np.arange(10)*2, marker='o', linestyle='-', color='b', alpha=.1)
      plt.plot(np.arange(10), np.arange(10)*2 - 10, marker='v', linestyle='--', color='c', alpha=.3)
      plt.plot(np.arange(10), np.arange(10)*2 - 20, marker='+', linestyle='-.', color='y', alpha=.8)
      plt.plot(np.arange(10), np.arange(10)*2 - 30, marker='*', linestyle=':', color='r', alpha=1.)
      
      # 타이틀 & font 설정
      plt.title('색상 설정 예제', fontsize=20)
      
      # X축 & Y축 Label 설정
      plt.xlabel('X축', fontsize=20)
      plt.ylabel('Y축', fontsize=20)
      
      # X tick, Y tick 설정
      plt.xticks(rotation=90)
      plt.yticks(rotation=30)
      
      plt.show()

 

  • plt.show()와 마찬가지로, 모든 명령 이후 plt.savefig(‘filename’, dpi=)를 이용해 플롯을 저장할 수 있다
    # Plot 저장하기
    plt.plot(np.arange(10), np.arange(10)*2, marker='o',
    linestyle='-', color='b', alpha=.1)
    plt.plot(np.arange(10), np.arange(10)*2 - 10, marker='v',
    linestyle='--', color='c', alpha=.3)
    plt.plot(np.arange(10), np.arange(10)*2 - 20, marker='+',
    linestyle='-.', color='y', alpha=.8)
    plt.plot(np.arange(10), np.arange(10)*2 - 30, marker='*',
    linestyle=':', color='r', alpha=1.)
    
    # 타이틀 & font 설정
    plt.title('색상 설정 예제', fontsize=20)
    
    # X축 & Y축 Label 설정
    plt.xlabel('X축', fontsize=20)
    plt.ylabel('Y축', fontsize=20)
    
    # X tick, Y tick 설정
    plt.xticks(rotation=90)
    plt.yticks(rotation=30)
    
    # plt.show()
    plt.savefig('savefig_200dpi.png', dpi=200)​
반응형

'데이터분석' 카테고리의 다른 글

33-(3). seaborn  (1) 2024.01.15
33-(2). Matplotlib  (1) 2024.01.15
32-(2). 정량적 데이터 분석  (1) 2024.01.14
32-(1). 확률과 통계  (2) 2024.01.14
31. 정규화, 데이터 스케일링  (2) 2024.01.10