0

基本的にこれを行うコードがいくつかあります:

for i = 1:length(ReliabilityStruct)
    if (FailureFlags(i) == 0) 
        plot(X(i), Y(i), '.b');
    elseif (FailureFlags(i) == 1)
        plot(X(i), Y(i), 'or');
    elseif (FailureFlags(i) == 2)
        plot(X(i), Y(i), 'og');
    elseif (FailureFlags(i) == 3)
        plot(X(i), Y(i), 'ok');
    else
        fprintf('\nUnknown Flag, check Data\n')
        return
    end
end
drawnow;
legend('Recovery', '1', '2', '3');

したがって、私の目的は、フラグごとに異なるシンボルを持つグラフを作成することです。下記参照:

ここに画像の説明を入力

ご覧のとおり、凡例はデータに正確には適合しません。これを修正するには、各凡例エントリをどのように変更できますか? あるいは、これにアプローチするより良い方法はありますか?

4

3 に答える 3

3

私はあなたがこのようなものを使うことができると思います(追加のボーナスはあなたがループを避けることです!):

ind = FailureFlags==0;
plot(X(ind), Y(ind), '.b');

ind = FailureFlags==1;
plot(X(ind), Y(ind), 'or');

ind = FailureFlags==2;
plot(X(ind), Y(ind), 'og');

ind = FailureFlags==3;
plot(X(ind), Y(ind), 'ok');

legend('Recovery', '1', '2', '3');
于 2013-02-21T06:16:11.563 に答える
1

これを試してみてください。ループで、次のように各プロットの割り当てを行います。

 p1=plot(X(i), Y(i), '.b');
elseif (FailureFlags(i) == 1)
 p2=plot(X(i), Y(i), 'or');
elseif (FailureFlags(i) == 2)
 p3=plot(X(i), Y(i), 'og');
elseif (FailureFlags(i) == 3)
 p4=plot(X(i), Y(i), 'ok');

次に、特定のものに凡例を使用できます。

legend([p1 p2],'stuff','morestuff')
于 2013-02-21T06:14:57.140 に答える
1

コマンドを使用して、任意の関数の使用法を参照できることに注意してくださいhelp。あなたの場合、help legend次のような使用例が表示されます。

legend(H,string1,string2,string3, ...) puts a legend on the plot
containing the handles in the vector H using the specified strings as
labels for the corresponding handles.

したがって、プロットを などの変数に割り当てることで、プロット ハンドラを取得できますp1=plot(X(i), Y(i), '.b');。そして、 のように、ハンドラを最初のパラメータとしてコマンドを呼び出して、凡例を描画しますlegend([p1], 'something')

于 2013-02-21T06:20:28.857 に答える