5

Matlabの棒グラフに凡例をプロットするにはどうすればよいですか?コードは次のとおりです。

Y = [1.5056
0.72983
3.4530
3.2900
1.4839
12.9 ];
n = length(Y);
h = bar(Y);
colormap(summer(n));
grid on

l = cell(1,6);
l{1}='L'; l{2}='B'; l{3}='R'; l{4}='P'; l{5}='h'; l{6}='Ri';    
legend(h,l);

これにより、エラーが発生します。警告:余分な凡例エントリを無視します。SOとWebで見つけた解決策を試しましたが、解決できませんでした。

4

2 に答える 2

16

凡例の代わりに、次のような目盛りラベルを使用して解決できます。

set(gca,'xticklabel', l) 

ここに画像の説明を入力してください

これにより、各バーにラベルが付けられます。使用legendする場合は、マトリックスデータが必要であるため、棒グラフにはエントリごとに複数の棒が表示されます。例えば

Y=rand(10,6)
h = bar(Y);
colormap(summer(n));
grid on
l = cell(1,6);
l{1}='L'; l{2}='B'; l{3}='R'; l{4}='P'; l{5}='h'; l{6}='Ri';    
legend(h,l);

ここに画像の説明を入力してください

bar()または、次のようにさまざまな呼び出しを使用できます。

h = bar(diag(Y));

ただし、各バーごとに変位が得られます。

ここに画像の説明を入力してください

したがって、実際にそれを使用する唯一の方法は、ここで説明するのと同様に、legendそれぞれを個別にプロットすることです。bar

于 2013-02-04T23:19:32.283 に答える
1

blaの答えに加えて、使用できます

h = bar(diag(Y),'stacked');

ずれを避けたい場合。

于 2016-03-18T15:16:00.087 に答える