Subscribed unsubscribe Subscribe Subscribe

MATLABで自動的にfigureを重ならないように並べる

MATLABで、figureが互いに重ならないように並べるgridfigureというコマンドを作りました。
gridfigure - File Exchange - MATLAB Central

MATLABのfigureには'defaultfigurecreatefcn'という隠されたプロパティがあり、これを変えることでfigureウインドウ作成時に任意の関数を実行することができます。
関数はそのfigureが初めて作成された時に一度だけ呼ばれ、以降figure(1)などでフォーカスを当てても呼ばれません。
他のfigureウィンドウを作ったり、figureを一度閉じた後にもう一度開いた時も呼ばれます。

f:id:woodrush:20141212210244p:plain

この機能を使い、ここにfigureをグリッド状に並べる関数を登録しておくことで、何もコマンドを入力しなくてもfigureが勝手にグリッド状に並ぶようになります。
複数のfigureを出して見比べたい時にかなり重宝すると思います。

更に、手動でfigureを並べ替えられるgridfigureというコマンドを作り、

  • マルチディスプレイ対応(サブディスプレイに表示する順番を選べる→メインディスプレイで作業しながら、サブディスプレイにfigureを描画可能)
  • ウィンドウサイズを指定可能
  • 並べ方を指定可能(左から右、上から下)

という機能を付けました。
更に、一度gridfigureでウィンドウサイズなどを指定しておくと、以降出てくるfigureのサイズがすべて指定のサイズになります。

過去にも手動でfigureを並べるコマンドはあったのですが、defaultfigurecreatefcnを使って自動でfigureを並べるパッケージは無かったので、その点はかなり便利になっていると思います。