PLOTYY 関数で作成したグラフ​のY軸の表示範囲を変​更すると、左軸の目盛​りが右軸に表示される​のはなぜですか?

12 ビュー (過去 30 日間)
MathWorks Support Team
MathWorks Support Team 2010 年 7 月 22 日
編集済み: MathWorks Support Team 2024 年 4 月 17 日
PLOTYY 関数でプロットしたグラフのY軸の表示範囲を変更すると、左軸の目盛りが右軸に表示されます。右軸に表示されない方法を教えてください。
■ 再現例
% データセットの作成
x = 0:0.01:20;
y1 = 200*exp(-0.05*x).*sin(x);
y2 = 0.8*exp(-0.5*x).*sin(10*x);
% plotyy関数でグラフを描画
[AX,H1,H2] = plotyy(x,y1,x,y2);
% ylim 関数で表示範囲を変更
ylim(AX(1),[-300 300]) % 左軸の表示範囲を変更
set(AX(1),'YTickMode','Auto') % ラベルを自動で設定するように変更
ylim(AX(2),[-1 1]) % 右軸の表示範囲を変更
set(AX(2),'YTickMode','Auto') % ラベルを自動で設定するように変更
■上記コマンドの実行結果

採用された回答

MathWorks Support Team
MathWorks Support Team 2024 年 4 月 17 日
編集済み: MathWorks Support Team 2024 年 4 月 17 日
上記現象を回避するには、以下の方法が考えられます。
1. axesのboxプロパティをOffにする
第1軸(左軸)の axesの'Box'プロパティを'Off'に設定します。
set(AX(1),'Box','Off')
この場合、axesの上側の線が表示されなくなります。
この現象が気になる場合は、2の方法をお勧めします。
2. plotyy関数を使わず、2つの軸を描き、重ねて表示する
プロットするデータについて1つずつ軸を作成し、第1軸上に、第2軸を重ねて表示します。また、plotyy関数と類似した表示になるよう、下記(1)-(3)のプロパティ変更を行います。
(1) 第1軸が見えるよう、第2軸の背景色のプロパティをなしに設定
(2) 第2軸のY軸を右側に表示
(3) 第2軸のX軸を上側に表示し、X軸の目盛りを非表示に設定
% データの作成
x = [0:0.01:20]';
y1 = 200*exp(-0.05*x).*sin(x);
y2 = 0.8*exp(-0.5*x).*sin(10*x);
% 第1軸にデータをプロットし、第1軸のハンドル番号を取得
hl1 = line(x,y1,'Color','b');
ax1 = gca;
set(ax1,'XColor','k','YColor','b','Ylim',[-300 300])
set(get(ax1,'Ylabel'),'String','Left Y-axis')
% 第1軸のハンドル番号から情報を取得し、第1軸の位置に、第2軸を重ねて表示
ax2 = axes('Position',get(ax1,'Position'),... % (1)
'Color','none',... % (1)
'XColor','k','YColor','r',...
'Ylim',[-1 1]);
set(ax2,'YAxisLocation','right') % (2)
set(ax2,'XAxisLocation','top','XTickLabel',[]) % (3)
set(get(ax2,'Ylabel'),'String','Right Y-axis')
% 第2軸のハンドルを親に指定し、ラインをプロット
hl2 = line(x,y2,'Color','r','Parent',ax2);
本件に関連するヘルプドキュメントが下記 URL よりご覧いただけます。
・複数の X軸、Y軸の使用(MATLABマニュアル)

その他の回答 (0 件)

タグ

タグが未入力です。

製品


リリース

R2011a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!