1. ホーム
  2. matlab

[解決済み] グラフと関係のないカスタム凡例を追加する

2022-02-12 03:03:34

質問

グラフとは全く関係のない凡例を挿入したいのですが、可能ですか?

figure;
hold on;
plot(0,0,'or');
plot(0,0,'ob');
plot(0,0,'ok');
leg = legend('red','blue','black');

今度は別の図に追加したい。

figure;
t=linspace(0,10,100);
plot(t,sin(t));
%% ADD THE LEGEND OF PLOT ABOVE 

解決方法は?

過去にこの問題を解決した方法です。

figure
t=linspace(0,10,100);
plot(t,sin(t));
hold on;

h = zeros(3, 1);
h(1) = plot(NaN,NaN,'or');
h(2) = plot(NaN,NaN,'ob');
h(3) = plot(NaN,NaN,'ok');
legend(h, 'red','blue','black');

これは追加の点をプロットしますが、座標が NaN は、プロット自体には表示されません。

2016/10/26を編集。 私のオリジナルの回答では、2016bの凡例項目がグレーアウトしています。上記の更新されたコードは動作しますが、以下の回答は2016b以前にのみ関連します。

figure
t=linspace(0,10,100);
plot(t,sin(t));
hold on;

h = zeros(3, 1);
h(1) = plot(0,0,'or', 'visible', 'off');
h(2) = plot(0,0,'ob', 'visible', 'off');
h(3) = plot(0,0,'ok', 'visible', 'off');
legend(h, 'red','blue','black');

これは追加の点をプロットしますが、プロット自体には表示されません。

また copyobj を使用して、ある図から別の図にグラフィック要素をコピーします。要素がたくさんある場合、次に set(x, 'visible', 'off') を使えば、凡例を表示する前にそれらを隠すことができますが、最終的な用途に依存します。