この記事のポイント
- MATLABの
yyaxisを使うと、左右のY軸を切り替えながら同じX軸上に複数系列を描けます。 - スケールの異なるデータを1枚で比較したい場面で、二軸グラフは実用的な選択肢になる可能性があります。
- 軸色を工夫するなど誤解を招かない見せ方が重要かと考えます。
colororderを使用することでミスなく軸色とプロットを調整することができると考えます。
MATLABで「二軸プロットしたい」と感じる場面
MATLABでデータを可視化していると、1つのグラフの中で複数のデータを比較したい場面はよくあるかと考えます。特に、一方は緩やかに変化する値であり、もう一方は急激に大きく異なる値、という組み合わせでは、同じY軸に載せるだけでは、変化の傾向が認識しずらくなる傾向にあると考えます。。
たとえばですが、ある信号の波形と、そのときの別の指標の変化を同時に見たいことがあるとします。これらのデータを別々のFigureにして表示すると関係がつかみにくく、1枚のFigureに重ねると今度はスケール差で片方がつぶれて見える、ということも少なくありません。
そのような場合の選択肢の一つに、MATLABでは yyaxis を使う方法があります。以下の画像のように、yyaxisを使用することで、左側と右側で異なるY軸を持つFigureを作成することができ、「スケールが異なる時系列のデータを眺めるときに便利」な状態にすることができます。
この記事では、MATLABの yyaxis の使い方や、そして見やすい図にするために意識したい点を整理していきます。

yyaxis とは何か
yyaxis は、同じ座標軸の中で左Y軸と右Y軸を切り替えながらプロットできる MATLAB の関数です。X軸を共有したまま、Y軸だけを左右に分けて使えるようになります。yyaxis left と yyaxis right を切り替えながら2本の系列を描画できます。
基本の考え方はとてもシンプルだと考えます
yyaxis leftで左側のY軸を有効にするyyaxis rightで右側のY軸を有効にする- それぞれの状態で
plotすると、対応する軸に線が描かれる
MATLABでの基本的な書き方
関数yyaxisを使用したシンプルな書き方は、次のようになるかと考えます。この例では、左軸に y1、右軸に y2 を描いています。左側の軸に対応するy1をプロットし、右側の軸に対応するy2をプロットします。
figure
yyaxis left
plot(x, y1)
yyaxis right
plot(x, y2)実際の画面イメージから分かること
冒頭の画像では、黒い系列とマゼンダの系列が同じX軸上に描かれていますが、右側の軸には別の数値スケールが表示されています。このような二軸でプロットする方法は、次のような場面で有効であると考えます。
- 一方の変化量が小さく、もう一方の変化量が大きいとき
- 同じタイミングで起きた変化を1枚で見比べたいとき
- 別図に分けると対応関係が追いにくくなるとき
一方で、二軸グラフは読み手に負担がかかりやすい表現だと感じます。そのため、読み手に負担がかからないように、見せ方を工夫する必要があると考えます。たとえば、冒頭の画像ではは、ax.YAxis(1).Color = 'k'; や ax.YAxis(2).Color = 'm'; のように、軸色を線色に合わせる書き方をしています。意図としては、グラフを見た人が「どの線がどちらの軸なのか」をすぐ理解しやすくなることを期待しています。このことから、yyaxis は「とりあえず使う機能」というより、「同じX軸上で比較する意味がある場面で使う機能」と考えると扱いやすいです。
色の設定に便利な関数colororder
冒頭の画像では、「軸の色を指定する」工程と「プロットの線色を指定する」工程がそれぞれ2つ存在しています。そのため、色を後々変化させる場合を考えると、色を修正する手間は単純なplot関数をしようする場合に比べて、二倍の作業量が生じることになります。そんな時に便利なのがcoloroder関数です。coloroderは事前に使用する色の順番を指定できる関数です。この関数を使うことで、手軽にyyaxisの色の変更を行うことができます。
yyaxisとcoloroderに関するMATLABドキュメント

figure
colorder({'k','r'})
yyaxis left
plot(x,y1)
yyaxis right
plot(x,y2)二軸グラフを使うときの注意点
yyaxis は便利ですが注意すべき点もあるかと考えます。次のような点は意識しておくと安心です。
1. 数字の印象が強く出やすい
左右でスケールが違うため、線どうしの位置関係だけを見てしまうと、実際以上に相関があるように感じられることがあるみたいです。読む相手が多い資料では、凡例、軸ラベル、単位を丁寧に付けることも大切かと考えます。
2. 重ねる意味があるかを考える
時間的な対応やイベントとの関係を見たい場合には二軸表示が有効である場面が多いかと考えます。一方で、tiledlayoutなどを使用して別の軸枠でプロットしたり、そのままhold onで重ねてプロットしたりする方が読み手に優しい場合もあるかと考えます。読み手の目線を意識して選択することがよいと考えます。
3. 色だけに頼りすぎない
二軸プロットにおいて色による区別は有効な方法の一つだと考えますが、印刷や表示環境によっては見え方が変わることもあると考えます。必要に応じて線種やラベルの付け方も合わせて考えると、より伝わりやすくなると考えます。
まとめ
MATLABで二軸プロットを作りたいときは、yyaxis を使うことで、左右のY軸を切り替えながら同じX軸上に複数系列を描けます。特に、スケールの異なるデータを1枚で見比べたい場面では、非常に便利です。
まずは yyaxis left と yyaxis right の基本を押さえ、試してみることが重要かと考えます。その後、必要に応じて軸色や colororder を整えると、見やすい図に近づくかと考えます。
また、二軸グラフは便利な反面、見せ方によっては誤解を生みやすい面もあります。「本当に同じ図に重ねる意味があるか」「左右の軸の対応が一目で分かるか」を意識しながら使うことが、一つの実践的な進め方だと思います。
FAQ section
Q1. MATLABで二軸グラフを作るには何を覚えればよいですか?
まずは yyaxis left と yyaxis right を切り替えてから plot する流れを覚えると始めやすいです。左軸に描く系列と右軸に描く系列を明確に分ける、ということを意識していただければと存じます。
Q2. 二軸グラフはどんなときに向いていますか?
同じ時間軸や同じX軸上で、スケールの異なるデータの変化を一緒に確認したいときに向いています。別々の図だと対応関係が追いにくい場面で役立つと考えています。
Q3. yyaxis を使うときに色をそろえたほうがよいのはなぜですか?
左右どちらの軸がどの線に対応するかを、見た瞬間に理解しやすくなるためです。軸色と線色を合わせるだけでも、読みやすさはかなり変わります。
Q4. いつでも二軸グラフを使えばよいのでしょうか?
必ずしもそうではありません。見た目は便利でも、読み手に誤解を与えることがあります。比較の目的が弱い場合は、別図やサブプロットのほうが適していることもあると考えます。
MATLABでの可視化は、関数そのものは短く書けても、「どう見せると伝わるか」で迷うことが少なくありません。もし yyaxis を含むグラフ作成や、既存コードの見直し、資料向けの図の整え方で手が止まりそうでしたら、SCISEL でもレビューや部分的なご相談をお手伝いできます。身近に相談相手がいない場合でも、必要な範囲に絞って一緒に整理していくことができます。
SCISEL
MATLAB LabVIEWで困った方へ 支援・代行により研究や開発のサポートを行います
