0

次のコードは、左の y 軸を参照する 2 つの線と右の y 軸を参照する 1 つの線を含むプロットを生成します。両方のプロットには独自の凡例がありますが、3 行すべてをリストする凡例は 1 つだけ必要です。'y1','y2'文字列を 2 番目の- コマンドにも入れようとしましたlegendが、うまくいきませんでした。

line(x,y1,'b','LineWidth',2)

line(x,y2,'Color',[0,0.6,0.5],'LineWidth',2)

legend('y1','y2');

ax1 = gca;
ax2 = axes('Position',ax1.Position,'YAxisLocation','right', 'Color','none','YColor',[255,127,80]/256);
linkaxes([ax1,ax2],'x');

line(x,y3,'Parent',ax2,'LineWidth',2,'Color',[255,127,80]/256)

legend('y3')
4

1 に答える 1

1

凡例は何らかの形で軸に接続されているため、これは難しい問題です。2 つの軸を作成するので、2 つの凡例があります。しかし、あなたが望むものを達成するためのトリックがあります。まず、すべての線を同じ軸にプロットしてから、 を実行しlegendます。次に、2 番目の軸を作成し、3 番目の線を 2 番目の軸に移動します。したがって、コードは次のようになります。

% line
line(x,y1,'b','LineWidth',2)
line(x,y2,'Color',[0,0.6,0.5],'LineWidth',2)
l3=line(x,y3,'LineWidth',2,'Color',[255,127,80]/256)

% legend
legend('y1','y2','y3');

% 2nd axes
ax1 = gca;
ax2 = axes('Position',ax1.Position,'YAxisLocation','right', 'Color','none','YColor',[255,127,80]/256);
linkaxes([ax1,ax2],'x');

% move l3 to 2nd axes
set(l3,'Parent',ax2);

を使用したい場合は'DisplayName'line

line(x,y1,'Color','b','LineWidth',2,'DisplayName','y1');
line(x,y2,'Color',[0,0.6,0.5],'LineWidth',2,'DisplayName','y2');

legend('show');
于 2015-10-04T08:31:00.453 に答える