matplotlibのグラフをインタラクティブなまま保存する
savefig() で画像に保存しちゃうと、矩形拡大とかができないし、
show() しちゃうと閉じたら消える。インタラクティブなまま保存できたらよいのにと思って調べてみた。
https://stackoverflow.com/questions/4348733/saving-interactive-matplotlib-figures
https://stackoverflow.com/questions/29160177/matplotlib-save-file-to-be-reedited-later-in-ipython
MATLABにはそういう機能が既にあるみたいですね。まぁ欲しくなるよね。
matplotlibの場合、figureオブジェクトをpickleで保存すればいいみたいです。
日本語でも情報ありました。このエントリを書く意味がほとんど無くなってしまった。
http://kuroneko0208.hatenablog.com/entry/2014/07/28/161453
バッチファイルを作っておいて、pickleファイルを放り込めばすぐに見れる、みたいな感じにしておけばいいのかなー。
pngでもpickleでも保存しておいて、中身を詳しく見たくなったらインタラクティブモードでも見れるみたいな形にしておくと便利かな
保存する側
#! /usr/bin/python2.7 # coding: utf-8 import matplotlib.pyplot as plt import pickle xs = range(10) ys = [x**2 for x in xs] fig = plt.figure() ax = fig.add_subplot(111) ax.plot(xs, ys) #plt.show() with open('figure_image.pkl', 'wb') as ofs: pickle.dump(fig, ofs)
表示する側
#! /usr/bin/python2.7 # coding: utf-8 import matplotlib.pyplot as plt import pickle import sys filename = 'figure_image.pkl' if len(sys.argv) > 1: filename = sys.argv[1] with open(filename) as ifs: fig = pickle.load(ifs) plt.show()
rem plt_viewer.bat cd %~dp0 python plt_viewer.py %1