- 締切済み
matlabのy軸を2つ利用したグラフについて
matlabのグラフ作成について質問です。 y軸を左右に表示し、グラフを作成したいのですが、データが6個あります。 2個であればplotyyを使えばいいと思いますが、今回は、データのうち4つを左の軸、2つを右の軸にしたい場合はどのようにグラフを作成したらいいでしょうか? わかる方、よろしくお願いいたします。
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- Kules
- ベストアンサー率47% (292/619)
連続で指摘回答すみません。前の回答する時に気づいとけばよかった… 確か hold onのコマンドは、カレントの軸にしか効かなかったように記憶しています。 plotyyを実行した段階でカレントの軸はax(2)になっているので、 ax(2)には続けてグラフがプロットできますが、 ax(1)にプロットすると前のものは消えてしまいます。 これを防ぐには、 axes(ax(1));hold on; axes(ax(2));hold on; とするか、 set(ax,'Nextplot','Add'); とする必要があります。 参考になれば幸いです。
- cpen
- ベストアンサー率58% (18/31)
すいません、ちょっとトピずれします。 Kulesさん、なるほど、そういうやり方も出来るんですね!参考になります。訂正ありがとうございます。
- Kules
- ベストアンサー率47% (292/619)
すみません、横入りします。 A No.1の方が書かれているように >axes(ax(1)) > axis([x_min x_max y_min_left y_max_left]) > axes(ax(2)) > axis([x_min x_max y_min_right y_max_right]) とすると、ax(1)をカレントの軸にして(軸を呼び出す、といってもいいかもしれません)x軸、y軸を設定。ax(2)を呼び出して x軸、y軸の範囲を設定。 という動作になりますが、 これだと設定する必要もないy軸の範囲を設定することになりますし(これはxlim([min max])とすることで回避できますが)、 わざわざこれだけのために4行も使うのもメンドクサイです。 axesプロパティにxlimというのがありますので、 set(ax,'Xlim',[x_min,x_max]); とすれば両方の軸のx軸の範囲を同時に揃えることができます。 参考になれば幸いです。
- cpen
- ベストアンサー率58% (18/31)
私もMATLAB初心者ですが。。。 help見て試しながらやってみたら、多分zakkyさんがしたいことが出来たと思うので一応書いておきます。 6つ違う軸ではなくて、左側の4つ、右側の2つはそれぞれ同じ軸でいいんですよね? ax = plotyy(1:10, 2:2:20, -5:5, -5:5); %ax(1)は左側のaxisのハンドル、 ax(2)は右側のaxisのハンドル hold on; 左側の軸をもっと使ってplotしたかったら plot(ax(1), x軸, y軸) 右側だったら plot(ax(2), .......同じく) ( 同じく、 axes(ax(1)) plot(x軸, y軸) で左側に。 axes(ax(2)) plot(x軸, y軸) で右側にplot出来ます。) で、もしx軸の数字が合わなくなったら axes(ax(1)) axis([x_min x_max y_min_left y_max_left]) axes(ax(2)) axis([x_min x_max y_min_right y_max_right]) でx_min x_maxを両方同じにすればいいと思います。