はじめに

MATLABでデータを可視化する際、2 つの y 軸を同時に表示したいケースがあります。たとえば、左側の y 軸は温度(摂氏)を、右側の y 軸は湿度(%)を表したいときなど、異なるスケールや単位を同じプロット上で比較するときに非常に便利です。本記事では、MATLABで簡単に2つの y 軸を持つチャートを作成する方法をご紹介します。

キーワード再掲:MATLAB, 2 つの y 軸, yyaxis, plotyy, 左軸, 右軸, 凡例, ラベル

1. yyaxis 関数を使った2つの y 軸の作成

1.1 基本的な使い方

MATLAB (R2016a以降) では、yyaxis 関数を用いて2軸プロットを作成するのが一般的です。以下のように、左側の y 軸に対してプロットし、その後 yyaxis right とすることで右側の y 軸に対するプロットを追加できます。

% サンプルデータの作成
x = linspace(0,10,100);
y_left  = 0.5*sin(2*x) + 2;   % 左軸用
y_right = x.^2/10;            % 右軸用

figure;
% 左のY軸に対してプロット
yyaxis left
plot(x, y_left, 'LineWidth', 1.5);
xlabel('Time');
ylabel('Amplitude');          % 左軸ラベルを設定

% 右のY軸に対してプロット
yyaxis right
plot(x, y_right, '--', 'LineWidth', 1.5);
ylabel('Magnitude');          % 右軸ラベルを設定

title('2つのY軸があるチャートの例');
grid on;

上記コードを実行すると、左側の y 軸には実線の波形データ、右側の y 軸には破線の曲線が重ね描きされます。

図1.第2Y軸を追加

1.2 軸のプロパティ設定

yyaxis で設定したそれぞれの y 軸は、Axes オブジェクトのプロパティを個別に指定できます。たとえば、x 軸や y 軸の範囲 (xlim, ylim) や、軸のスケールを対数に設定する (set(gca,'YScale','log')) など柔軟に調整可能です。

% サンプルデータの作成
x = linspace(0,10,100);
y_left  = 0.5*sin(2*x) + 2;   % 左軸用
y_right = x.^2/10;            % 右軸用

figure;
% 左のY軸に対してプロット
yyaxis left
plot(x, y_left, 'LineWidth', 1.5);
xlabel('Time');
ylabel('Amplitude');          % 左軸ラベルを設定

% 右のY軸に対してプロット
yyaxis right
plot(x, y_right, '--', 'LineWidth', 1.5);
ylabel('Magnitude');          % 右軸ラベルを設定

title('2つのY軸があるチャートの例');
grid on;

% 左のY軸範囲を固定
yyaxis left
ylim([-1 3]);     % -1~3の範囲

% 右のY軸を対数スケールに変更
yyaxis right
set(gca, 'YScale','log');

図2.軸のプロパティ設定

表1.軸に関連する主なプロパティ設定の一覧表

設定例説明
yyaxis left / right左/右の Y 軸をアクティブにするyyaxis left
ylim([ymin ymax])現在の軸(左/右)に対する Y 軸の範囲設定ylim([0 10])
set(gca,'YScale','log')現在の軸(左/右)を対数スケールに変更set(gca,'YScale','log')
ylabel('text')現在の軸(左/右)の軸ラベルを設定ylabel('Temperature (°C)')

2. 古いバージョンでも使える plotyy 関数 (参考)

MATLABの古いバージョン (R2016a 未満) では、yyaxis が存在しなかったため、plotyy 関数 がよく使われていました。

x = 0:0.1:10;
y_left  = sin(x);
y_right = x.^2;

[ax,h1,h2] = plotyy(x, y_left, x, y_right);
% ax は左軸と右軸のハンドル、h1 と h2 はプロット線のハンドル

ylabel(ax(1), 'sin(x)');      % 左軸ラベル
ylabel(ax(2), 'x^2');         % 右軸ラベル

現在は yyaxis の使用が推奨されていますが、古いコードをメンテナンスするときや過去バージョンとの互換性が必要な場合には覚えておくと便利です。

3. ライティングや色分けなどのヒント

3.1 ラインの色やスタイルで区別

2つの y 軸を使っているグラフでは、「どちらのデータがどちらの軸に対応しているか」 が視覚的にわかりやすいように、ラインの色やスタイルを変える、あるいは凡例を使うことが重要です。

legend({'Amplitude (Left Axis)', 'Magnitude (Right Axis)'});

このように凡例を追加するだけでも、読み手の理解を大きく助けます。

図3.凡例の追加

3.2 軸ラベルとタイトルの明確化

前述のとおり、左軸・右軸それぞれに適切なラベル(単位や変数名)をつけることで可読性が向上します。また、グラフ全体に対して意味のあるタイトルを付けると、図のみを見ても情報が伝わりやすくなります。


まとめ

本記事では、MATLABにおける2 つの y 軸があるチャートの作成方法を中心に解説しました。

  1. yyaxis 関数 (R2016a以降推奨)
    • yyaxis left / yyaxis right を使って左軸と右軸を切り替えながらプロット
    • 軸のプロパティもそれぞれ個別に設定可能
  2. plotyy 関数 (古いバージョンとの互換のため)
    • R2016a未満ではこちらを使用
    • 同様に左軸・右軸のハンドルを取得してカスタマイズ

グラフを作成するときは、ラインの色やスタイル、軸ラベル、凡例などを工夫し、どのデータがどちらの軸に対応しているかを一目でわかるようにするのがポイントです。

さらなる学習リソース

  • MathWorks公式ドキュメント(日本語)
    2つの y 軸を使用するプロット (yyaxis)
  • MATLAB Answers (Q&Aフォーラム)
    2軸プロットに関するテクニックやトラブルシューティングが豊富
  • YouTube MathWorks公式チャンネル
    動画を通じて、実際の操作例を視聴しながら学習可能

キーワード再掲:MATLAB, 2 つの y 軸, yyaxis, plotyy, 左軸, 右軸, 凡例, ラベル