9

凡例のテキストを色分けしようとしています。(いくつかのプロットを異なるカテゴリに分類しようとしているので、凡例の線の色だけに頼ることはできません。) 凡例全体のテキストの色を設定することはできましたが、うまくいきません。行ごとに割り当てます。これは可能ですか?

これまでのコード:

list={'Label 1','Label 2','Label 3'};
leg=legend(list);
set(leg,'Textcolor',[1 0 0])

凡例全体のテキストの色を赤に設定します。赤も黒も作りたいです。色配列を nx 3 行列として割り当てようとしましたが、MATLAB はあまり好きではありません。また、 を使用して凡例のプロパティをget(leg)調べましたが、他に役立つと思われるものは見つかりませんでした。助言がありますか?

4

3 に答える 3

12

yuk と gnovice による回答は正しいですが、凡例関数が凡例コンポーネントに対応する追加のハンドルを返すという、ほとんど知られていないが完全に文書化されている事実を指摘したいと思います。凡例関数のドキュメントから:

[legend_h, object_h, plot_h, text_strings] = 凡例(...) を返します

  • legend_h — 凡例の軸のハンドル
  • object_h — 凡例で使用される線、パッチ、およびテキスト グラフィックス オブジェクトのハンドル
  • plot_h — プロットで使用されるラインおよびその他のオブジェクトのハンドル
  • text_strings — 凡例で使用されるテキスト文字列のセル配列

これらのハンドルを使用すると、それぞれのオブジェクトのプロパティを変更できます。

于 2010-02-03T22:22:42.657 に答える
9

コードは次のとおりです。

legtxt=findobj(leg,'type','text');
set(legtxt(1),'color','k')

どの凡例がどのインデックスに対応するかを調べるだけです。

于 2010-02-03T18:03:17.977 に答える
8

凡例のテキストの色を個別に変更するには、まず凡例オブジェクトの子であるテキスト オブジェクトのハンドルを取得する必要があります。次に、テキストの色を個別に変更できます。これを行う方法の例を次に示します。

plot(1:10, rand(1, 10), 'r');       % Plot a random line in red
hold on;
plot(1:10, rand(1, 10), 'b');       % Plot a random line in blue
hLegend = legend('a', 'b');         % Create the legend
hKids = get(hLegend, 'Children');   % Get the legend children
hText = hKids(strcmp(get(hKids, 'Type'), 'text'));  % Select the legend children
                                                    %    of type 'text'
set(hText, {'Color'}, {'b'; 'r'});  % Set the colors

最後の行の色の順序は、ラベルが関数に渡される方法とは逆の順序で、青の次にlegend赤であることに注意してください。上記により、次のプロットが得られます。

ここに画像の説明を入力

于 2010-02-03T18:02:45.747 に答える