Count strings occurrences and plot histogram

后端 未结 4 468
陌清茗
陌清茗 2021-01-18 05:09

Is there any straightforward way to create a histogram from a cell array like the one below? The spacing between the consecutive bars should be exactly the same and the labe

相关标签:
4条回答
  • 2021-01-18 05:24

    If you have access to the statistics toolbox, grp2idx is very useful:

    %# sorting is only necessary if the output should be sorted as well
    [idx,label] = grp2idx(sort(A)) 
    
    hist(idx,unique(idx));
    set(gca,'xTickLabel',label)
    
    0 讨论(0)
  • 2021-01-18 05:34

    You can also use the histogram function as follows:

    [C,~,ic] = unique(A);
    
    fig1 = figure;
    axes1 = axes('Parent',fig1,'XTickLabel',C,'XTick',1:length(C));
    hold(axes1,'on');
    
    histogram(ic)
    
    0 讨论(0)
  • 2021-01-18 05:45

    A solution that only uses built-in functions

    [u,~,n] = unique(A(:));
    B = accumarray(n, 1, [], @sum);
    bar(B)
    set(gca,'XTickLabel',u)
    
    0 讨论(0)
  • 2021-01-18 05:48

    I would like to know a better way, as well. Fwiw, I have used countmember in a roundabout way to plot data like this. I.E. if the data you posted was named A

    >> B={sort(unique(A)) countmember(sort(unique(A)),A)};
    >> bar(B{2});
    >> set(gca,'XTickLabel',B{1})
    
    0 讨论(0)
提交回复
热议问题