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

12 visualizaciones (últimos 30 días)
MathWorks Support Team
MathWorks Support Team el 22 de Jul. de 2010
Editada: MathWorks Support Team el 17 de Abr. de 2024
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') % ラベルを自動で設定するように変更
■上記コマンドの実行結果

Respuesta aceptada

MathWorks Support Team
MathWorks Support Team el 17 de Abr. de 2024
Editada: MathWorks Support Team el 17 de Abr. de 2024
上記現象を回避するには、以下の方法が考えられます。
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マニュアル)

Más respuestas (0)

Etiquetas

Aún no se han introducido etiquetas.

Productos


Versión

R2011a

Community Treasure Hunt

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

Start Hunting!