Legend in a bar plot in Matlab

前端 未结 2 1621

How can I plot a legend in a bar plot in Matlab? Here is the code:

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


        
相关标签:
2条回答
  • 2021-02-03 16:03

    Instead of legend, you can solve it using the tick labels for example:

    set(gca,'xticklabel', l) 
    

    enter image description here

    This will label each bar. If you want to use legend you need to have a matrix data, so the bar plot will show several bars per entry. For example

    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);
    

    enter image description here

    Or, you can use different bar() calls in this way:

    h = bar(diag(Y));
    

    But then you'll get a displacement per each bar:

    enter image description here

    So, the only way really to do that using legend is to plot each bar seperatly, similar to what is discussed here.

    0 讨论(0)
  • 2021-02-03 16:03

    Further to bla's answer, you can use

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

    if you want to avoid the displacement.

    0 讨论(0)
提交回复
热议问题