Matlab中条形图中的图例

Matlab中条形图中的图例,matlab,plot,legend,Matlab,Plot,Legend,如何在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); 这将给出一个错误:警告:忽略额外的图例条目。我尝试

如何在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);

这将给出一个错误:警告:忽略额外的图例条目。我尝试了在和web上找到的解决方案,但无法解决此问题。

您可以使用勾号标签而不是图例来解决此问题,例如:

set(gca,'xticklabel', l) 

这将标记每个条。如果要使用
图例
,则需要有矩阵数据,因此条形图将显示每个条目的若干条。比如说

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));
但是你会得到每根杆的位移:


因此,使用
图例
的唯一方法是单独绘制每个
,类似于前面讨论的内容。

关于bla的答案,您可以使用

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

如果您想避免位移。

但这会给我x轴上的文本。问题是我必须在那里放置其他文本。编辑你的意思是我不能在矢量数据上使用图例吗?请看我编辑过的答案,基本上,当你对行或列矢量使用bar()时,你不能使用图例。MATLAB文档中描述了图例的内部处理方式。