side by side multiply histogram in matlab

后端 未结 2 1196
心在旅途
心在旅途 2021-02-03 12:06

I would like to produce a plot like the following in matlab.

\"enter

Or may be som

2条回答
  •  南笙
    南笙 (楼主)
    2021-02-03 12:56

    You can use bar(...) or hist(...) to get the results you want. Consider the following code with results shown below:

    % Make some play data:
    x = randn(100,3);
    [y, b] = hist(x);
    
    % You can plot on your own bar chart:
    figure(82);
    bar(b,y, 'grouped');
    title('Grouped bar chart');
    
    % Bust histogram will work here:
    figure(44);
    hist(x);
    title('Histogram Automatically Grouping');
    
    % Consider stack for the other type:
    figure(83);
    bar(b,y,'stacked');
    title('Stacked bar chart');
    

    Group Bar Result Histogram Results Stacked Bar Result

    If your data is different sizes and you want to do histograms you could choose bins yourself to force hist(...) results to be the same size then plot the results stacked up in a matrix, as in:

    data1 = randn(100,1);       % data of one size
    data2 = randn(25, 1);       % data of another size!
    
    myBins = linspace(-3,3,10); % pick my own bin locations
    
    % Hists will be the same size because we set the bin locations:
    y1 = hist(data1, myBins);   
    y2 = hist(data2, myBins);
    
    % plot the results:
    figure(3);
    bar(myBins, [y1;y2]');
    title('Mixed size result');
    

    With the following results:

    enter image description here

提交回复
热议问题