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

8 visualizzazioni (ultimi 30 giorni)
MathWorks Support Team
MathWorks Support Team il 22 Lug 2010
Modificato: MathWorks Support Team il 17 Apr 2024 alle 15:53
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') % ラベルを自動で設定するように変更
■上記コマンドの実行結果

Risposta accettata

MathWorks Support Team
MathWorks Support Team il 17 Apr 2024 alle 0:00
Modificato: MathWorks Support Team il 17 Apr 2024 alle 15:53
上記現象を回避するには、以下の方法が考えられます。
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マニュアル)

Più risposte (0)

Tag

Non è stata ancora inserito alcun tag.

Prodotti


Release

R2011a

Community Treasure Hunt

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

Start Hunting!