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 回答