Python의 Matplotlib + Seaborn을 사용한 그래프 그리기를 비 Python 실행 환경의 Windows에서 사용

상황에 따라 Python의 그래프 그리기 기능을 비 Python 실행 환경의 Windows에서 사용하는 경우가 나왔기 때문에 비망록으로 설명했습니다.
nuget 라든지 있을지도 모르지만, 조사할 수 없었다...

환경



OS: Windows 10 64bit
Python:3.6.10
Pyinstaller:3.5

heatmap 그리기를 .py로 작성



이번에는 heatmap 그래프를 원하기 때문에 heatmap을 그려 .png 저장하는 스크립트 "heatMap.py"를 작성.
결국 Windows에서 .exe를 실행하므로 사용하기 쉽도록,
1. .csv 로드(경로 지정)
2. .png 저장(경로 지정)
인수로 실행할 수 있도록했습니다.
heatmap 그리기에는 seaborn을 사용했다.
동기는 다양한 heatmap이 쉽게 만들 수 있습니다.에서 확장 성을 느꼈기 때문.

샘플


import sys
import os
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt

def Heatmap(data):

 ax = sns.heatmap(data,annot=True)
 return ax

if __name__ == '__main__':

 args = sys.argv

 load_path = args[1]
 save_path = args[2]
 save_name = args[3]

 print(load_path,save_path,save_name)

 data = np.loadtxt(load_path,delimiter=",")
 hoge = Heatmap(data)
 hoge.plot()

 plt.savefig(os.path.join(save_path,save_name),facecolor="blue")   

첫 번째 인수 args [1] : 데이터 소스 (csv 파일)의 경로 + 파일 지정
두 번째 인수 args[2]: 그래프를 저장할 경로 지정
세 번째 인수 args [3] : 그래프 이름. 저장 형식 지정
※args[0]은 실행 파일명

파이썬 인수가있는 실행에 대한 자세한 내용은 여기,
matplotlib의 savefig 경로 지정은 여기을 참조했다.
※오류 처리는 할애

pyinstaller로 .exe 만들기



이 기사을 참고로 pyinstaller로 .exe 작성.



관련 dll을 포함하여 폴더를 만들었습니다.

.exe에서 인수가있는 실행



[앱.exe] [제1 인수] [제2 인수] [제3 인수]
C:\Users\user.name>heatMap.exe C:\Users\user.name\Documents\Python\Graph\DataSrc\matrix.csv C:\Users\user.name\Documents\Python\Graph\GraphDst heatMapTest.png

할 수있었습니다.


그러나이 작업은 매번 실행되는 정책으로 인해 실행 시간이 몇 초가 걸립니다.
 →실측 약 4초
File 저장을 반복하기 위해 Windows 앱 측에서이 .exe를 실행하여 출력 파일을 앱 측으로 가져 오는 용도에는 적합하지 않습니다. (늦어서 좋으면 할 수 있지만)
다음 번에는 .exe를 항상 시작하고 프로세스 간 통신으로 반환하도록 만듭니다.

좋은 웹페이지 즐겨찾기