2010年2月6日土曜日

MATLAB が出力する図を PowerPoint 向けに自動調節

MATLAB で描いた図やグラフを PowerPoint に貼り付けるときに
一番簡単な方法はFigure のメニューから [編集]-[Figureのコピー] を使って
PowerPoint 上でペーストすることだと思います.

しかし, MATLAB がデフォルト設定で作成するグラフには
以下のような問題があります.

  • プレゼン用には字が小さい
  • グリッドが出ない
    • 無いよりある方が無難だと思うのだけど・・・
  • コピー&ペースト時にサイズが変わる
    • グリッドまで変えられるので意図しない結果になることが多いですね
  • 線が見にくい
    • 細い&プロジェクターで見辛い色が使われます

丁寧に設定すればこれらの問題を解決することは可能ですが,
そこそこ面倒ですし,ミーティングなどで MATLAB による実演を行う際に
これらを逐一設定するのはテンポを損ねます.

というわけで,これらの設定を自動化するプログラムを作りました.
このプログラムは MATLAB のデフォルト設定を書き換えて,
以降に描かれるグラフをプレゼン用に見やすくします.

いまのところ MATLAB を再起動する以外に元に戻す方法はありません.

ちなみに得られるグラフは以下のようになります.

使用前


使用後
コード
function [] = prettify_figure_presen()
%PRETTIFY_FIGURE_PRESEN グラフのフォントをプレゼン用に最適化
% この関数を呼び出すと
% 以降に描かれるプロットの見た目がプレゼン向けになります.
% 元に戻すにはMATLABを再起動するしかないです.
%
% ※ ボード線図は別口(prettify_bodeplot_presen参照)
%    なので注意してください.


%% フォント
set(0,'defaultAxesFontSize',20);
set(0,'defaultAxesFontName','メイリオ');
set(0,'defaultAxesFontWeight','demi'); % normal/demi/bold
set(0,'defaultTextFontSize',20);
set(0,'defaultTextFontName','メイリオ');
set(0,'defaultTextFontWeight','demi');

%% 線の幅
set(0,'defaultAxesLineWidth', 1.5); % 軸
set(0,'defaultLineLineWidth', 2); % プロット

%% プロットの色
clorder = ...
    [  0,   0, 255; % 青
       0, 128,   0; % 緑
     255,   0,   0; % 赤
     204,   8, 204; % 紫
     222, 125,   0; % 茶
       0,  51, 153; % 紺 (青と区別しづらい,注意!)
      64,  64,  64];% 濃い灰色  
set(0,'defaultAxesColorOrder',clorder/255);

%% 最初からgrid on & box on
set(0,'DefaultAxesXGrid','on');
set(0,'DefaultAxesYGrid','on');
set(0,'DefaultAxesBox','on');

%% コピペ時にサイズを変更しない
set(0,'DefaultFigurePaperPositionMode','auto');

end

2010/2/17 追記
17行目の間違いを修正しました&reset(0)で設定を初期化できるそうです.
atsu-kan さんありがとうございます.

2 件のコメント:

atsu-kan さんのコメント...

Matlab再起動しなくても元に戻すコマンド
>> reset(0)
があるようです.あと17行目Axes -> Textですね.

丸田 一郎 (Ichiro Maruta) さんのコメント...

reset(0)は全然知りませんでした.
情報ありがとうございます.

あと,17行目たしかに間違ってますね~
修正しておきます.
ご指摘ありがとうございました.