side by side multiply histogram in matlab

后端 未结 2 1193
心在旅途
心在旅途 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

    0 讨论(0)
  • 2021-02-03 12:56

    Doesn't hist already do the first one?

    From help hist:

    N = HIST(Y) bins the elements of Y into 10 equally spaced containers
    and returns the number of elements in each container.  If Y is a
    matrix, HIST works down the columns.
    

    For the second look at help bar

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