0

matlabでplotyyを使用して、同じ図に2つのデータセットをプロットしています。左右の軸の範囲が異なります。しかし、右の軸には、2つの異なるスケールのセットが表示されているように見えます。そのうちの1つは本当に左軸からのものだと思います。

t=-1:0.02:1; 
y=sin(t); 
y1=2*sech(t); 
[AX, H] =plotyy(t, y, t, y1); 
ylim(AX(2), [0 3.25]); 
set(AX(2), 'YTickMode', 'auto')

それをオンラインで検索した後、ボックスをオフにすることで問題も解決することがわかりました。ただし、問題は、ボックスをオフにすると、上部の水平線も消えてしまうことです。とにかく余分なスケールを取り除き、フレームを維持するためですか?ありがとう。

4

2 に答える 2

2

それは可能であり、それほど難しくはありません。テストコードに基づく例示的な図を次に示しますあなたの例に基づく図

私がやったことは、3番目の軸を追加することです(この場合、ショートカットを使用してこれを達成しました.plotyyを2回呼び出した結果、最初の軸に余分な青い線があり、2番目の軸に緑色の線がありました)。

アイデアは、1 番目と 2 番目の軸の両方でバウンディング ボックスをオフにしてから、3 番目の軸でオンにすることです。その結果、上の軸が左の縦軸、2 番目が右の縦軸、3 番目が上の横軸になります。

于 2012-08-23T16:02:30.177 に答える
0

私はあなたがやりたいことをする簡単な方法はないと思います。ボックスをオフにすると(右側の青い目盛りを取り除くため)、上部の水平線が消えます。

set(AX(1), 'Box','off')

必要に応じて、次のコマンドで線を再描画できます。

line([-1, 1], [1, 1])

またはより一般的に:

lims = get(AX(1),{'XLim','YLim'});
line(lims{1}, lims{2}([2 2]))
于 2012-08-23T15:44:16.713 に答える