Help us understand the problem. What is going on with this article?

MATLAB の環境設定ファイルにグラフ設定を書いておく

はじめに - なぜ設定ファイルを作成するのか

グラフ作成時に,「同じようなコードを書いている/コピー&ペーストしている」ということがたびたび起こります.毎回同じグラフを書くわけではないので「別にコード書けばええやん」と思われるかもしれません.

でもきれいなグラフを描きたい.
ドキュメントや色んな人の記事を調べつつ...
だんだん凝りだして...
気づいたら...
ということがよくあります.

グラフに限らず,「素早くある程度の質の出力を得る」テンプレートに当てはめた結果を最初に得て,そこから微調節をして改善して進めていく流れを作れると分析もシミュレーションもスムーズに進めるなと思っています.
(今回はグラフだけなのでそれほど大した話ではないのですが,塵も積もればということで)

こんなグラフがでてきてしまう

グラフを描きました.
original.png

文字ちっちゃいね.
色もなんだかよくわからない.
グラフをきれいに出力する関数を誰かが作ったらしいけど,どこにあるんだっけ...?
ここですね: MATLABでLaTeX論文用の図を整形する

好みなグラフが表示されるようにしたい

きれいなグラフといえば,R の ggplot2 や Python の seaborn でしょうか.
グレーの背景は色が映えますね.
文字を大きくしつつ,まずはグラフを描いてみましょう.

fig = figure;
h = plot(rand(5,5), 'o', 'MarkerSize', 10);
title('たいとる')
xlabel('x軸のらべる')
ylabel('y軸のらべる')

grid on

# 軸のオブジェクトを取得
ax = fig.Children;

# 軸のプロパティを設定
ax.GridColor = [0 0 0];
ax.Color = [.9 .9 .9];
ax.Title.FontSize = 16;
ax.XLabel.FontSize = 16;
ax.YLabel.FontSize = 16;
ax.FontSize = 16;

# 軸の下にある線のオブジェクトのプロパティ LineWidth を設定
ax.Children(1).LineWidth = 2;
ax.Children(2).LineWidth = 2;
ax.Children(3).LineWidth = 2;
ax.Children(4).LineWidth = 2;
ax.Children(5).LineWidth = 2;

この汚いコードで,こんなグラフが出力されます.
revised.png
先程から文字サイズなどは改善されていますが,線の太さ LineWidth のところなんて,Children が100個あったら書くだけで大変です.

補足

グラフはグラフィックスオブジェクトのページにあるように階層的なオブジェクトで構成されています.以下の2点がグラフ描画に大きく関わる点です.
- Figure の下に Axes (軸),Axes の下にグラフ内の線や点の情報が含まれている
- Figure, Axes のプロパティを変更することでグラフを変更できる

デフォルト値を設定しよう

毎回プロパティを設定するのは面倒なので,グラフのデフォルト値を設定しておきます.
デフォルト値は MATLAB 起動時に実行される startup.m ファイルに書いておきます.
startup.m が存在するかどうかは

which -all startup.m

で確認できます.なければ適当に作ってパスを通しておきましょう.
パスは Home タブの Environment 内にある パスの設定/Set Path で startup.m ファイルのあるフォルダを追加すればが設定できます.
Screen Shot 2019-12-23 at 23.31.15.png

startup.m ファイルはこんな感じ.

% グリッドの設定
set(0, 'DefaultAxesXGrid', 'on');
set(0, 'DefaultAxesYGrid', 'on');
set(0, 'DefaultAxesZGrid', 'on');

% グラフの軸 (axes) の背景
set(0, 'DefaultAxesColor', [.9 .9 .9]);

% テキスト類のフォントサイズ
set(0, 'DefaultAxesFontSize', 16);
set(0, 'DefaultTextFontSize', 16);

% 線の太さとマーカーサイズ
set(0, 'DefaultLineLineWidth', 2);
set(0, 'DefaultLineMarkerSize', 10);

スタートアップファイルを保存したあと,再起動もお忘れなく.(起動時に実行されるファイルであるため)

デフォルト値を定義しておくことで,グラフ調節に手こずることが減るので,だいぶ時間を短縮できています.
他の言語でも設定ファイル書いておきたいな.

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした