Py淡

Python, Python, Python! In the spirit of "import antigravity"

matplotlibの図をBMPとしてクリップボードにコピーする関数作った。

よくデータ解析しているとmatplotlibでfigure(facecolor='w')にしてプロットした図をウィンドウズのSnipping toolクリップボードにコピーして、パワーポイントに貼って、ノーテーションしたりするわけですが、これが何度も続くと面倒い。

ぐぐってみたらwxのバックエンドではツールバーにクリップボードにコピーするアイコンを追加するハックがあった。残念ながらこのパッチはマージされなかったようで、1.4.2でもクリップボードにコピーできない。

で、やっぱり自分で作る。

matplotlibのデフォルトのバックエンドはいまQt4Aggだと思うのでQtでやるにはどうしたら良いのかなとぐぐってみたら、こんな質問があって、もしウィンドウズならwin32clipboardつかってみたら?という回答があったのでやってみた。

使い方

なんかmatplotlibでプロットしたらこの関数を引数なしでcopy2clipboard()としてやれば現在フォーカスがある図をBMPとしてクリップボードにコピーします。もしくはfigのインスタンスをfig=figure()のようにして取得してからプロットして、copy2clipboard(fig)のように使います。エディターにプロット用のスクリプトがあってなんどもプロットする場合、tight_layout()とかの後にこの関数を置いておくと一手間省けるという感じです。力技ですが、一応つかえます。