1

同じグラフにプロットしたい 2 セットのデータがあります。

最初のヒストグラム:

hist(data1);
ax1 = gca;

軸の次のセット、反対側の y を設定します

ax2 = axes('Position',get(ax1,'Position'),...
    'XAxisLocation','bottom',...
    'YAxisLocation','right',...
    'Color','none',...
    'XColor','k');

line() を使用してデータをプロットすると、次のように機能します。

line(data2a, data2b, 'Color', 'r', 'LineStyle', '-', 'Marker', '.', 'Parent', ax2);

しかし、plot() を使用すると、ヒストグラムが消去され、両方の軸が左側に表示されます。

plot(ax2, data2a, data2b); 

2 番目の軸が plot() に対して有効でない理由を誰かが理解できますか?

4

1 に答える 1

4

チェックアウトする必要がありdoc holdます。

MATLAB の軸には 'NextPlot' プロパティがあり、この軸で新しいプロット関数が発行されたときの動作を指定します。'nextplot' の既定値は です。これはreplace、新しいものが描画される前に、既存のプロットが消去されることを意味します。hold(ax, 'on')orを使用set(ax, 'nextplot', 'add')すると、既存のプロットを置き換えるのではなく、新しいプロットを既存のプロットに追加するように指定できます。

lineとのplot動作が異なる理由は、高レベル関数 ( などplot) がこの軸プロパティを尊重するのに対しlinepatch、 などの低レベル関数は尊重しないためです。どのような場合でも軸に追加され、既存の子は削除されません。

編集:あなたの場合は空でなければならないことに気付きましたax2-それでも上記を試してみてください;)

于 2013-09-25T10:57:14.277 に答える