9

MATLABのプロットに2つの凡例を追加したいと思います。これどうやってするの?

4

4 に答える 4

10

独自の凡例を (もちろん別の場所に) 重ね合わせた 2 番目の軸を作成できます。


編集:

簡単な例を次に示します。

%# create some plot with a legend
hAx(1) = axes();
hLine(1) = plot(1:10, 'Parent',hAx(1));
set(hAx(1), 'Box','off')
legend(hLine(1), 'line')

%# copy the axis
hAx(2) = copyobj(hAx(1),gcf);
delete( get(hAx(2),'Children') )            %# delete its children
hLine(2) = plot(sin(1:10), 'Color','r', 'Parent',hAx(2));
set(hAx(2), 'Color','none', 'XTick',[], ...
    'YAxisLocation','right', 'Box','off')   %# make it transparent
legend(hLine(2), {'curve'}, 'Location','NorthWest', 'Color','w')

スクリーンショット

于 2012-06-29T00:54:40.177 に答える
5

付箋の凡例を作成するには、次を呼び出すことができます copyobj

handle_legend = legend(handle_plot, 'string1');
copyobj(handle_legend, handle_figure);

関数はcopyobj、関連付けられた凡例を Figure 内に保持するだけです。

これは単一の軸内で機能し (2 つ目の重なった軸を作成する必要はありません)、この方法でいくつかの凡例を追加できます。

例:

%declare figure
hfigure = figure('Color', 'w');

%plot 2 lines (red and blue)
hplot1 = plot(1:10,'r-.x');
hold on;
hplot2 = plot(10:-1:1,'b--o');

%plot legends
hlegend1 = legend(hplot1, 'Data 1', 'Location','East'); %display legend 1
new_handle = copyobj(hlegend1,hfigure);                 %copy legend 1 --> retain
legend(hplot2, 'Data 2', 'Location','West');            %display legend 2

ここに画像の説明を入力

于 2014-04-24T00:17:57.220 に答える
1

最初の凡例を作成したら、新しい非表示の軸ハンドルを作成します。

ax=axes('Position',get(gca,'Position'),'Visible','Off');

次に、新しい軸で 2 番目の凡例を作成します。

legend(ax,...);

@Amroの答えと基本的に同じですが、よりシンプルで短いです。

于 2016-05-12T21:18:42.357 に答える