諸事情により,Pythonのグラフ描画機能を非Python実行環境のWindowsで使うケースが出たため,備忘録として記載.
nugetとかにあるかもしれないけど,調べきれなかった...
#環境
OS: Windows 10 64bit
Python:3.6.10
Pyinstaller:3.5
#heatmap描画を.pyで作成
今回はheatmapグラフが欲しいため,heatmapを描画して.png保存するスクリプト"heatMap.py"を作成.
最終的にはWindowsから.exe実行をするので,使いやすいように,
- .csvの読み込み(パス指定)
- .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]は実行ファイル名
pythonの引数付き実行についてはここを参照,
matplotlibのsavefigパス指定はここを参照した.
※エラー処理は割愛
#pyinstallerで.exe作成
この記事を参考に,pyinstallerで.exe作成.
関連dll含めてフォルダができた.
#.exeで引数付き実行
[アプリ.exe] [第一引数] [第二引数] [第三引数]
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を常時立ち上げておいて,プロセス間通信で返すように作る