在Matlab的条形图中的传奇

Mak*_*oni 4 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);
Run Code Online (Sandbox Code Playgroud)

这会出错:警告:忽略额外的图例条目.我尝试过在SO和网络上找到的解决方案,但我无法解决这个问题.

bla*_*bla 16

您可以使用刻度标签解决它,而不是图例,例如:

set(gca,'xticklabel', l) 
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

这将标记每个栏.如果你想使用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);
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

或者,您可以通过bar()以下方式使用不同的呼叫:

h = bar(diag(Y));
Run Code Online (Sandbox Code Playgroud)

但是你会得到每个酒吧的位移:

在此输入图像描述

所以,真正做到这一点的唯一方法legend就是分别绘制每一个bar,就像这里讨论的那样.