How to visualize two histograms for comparative analysis?

Basically I have two datasets and I want to perform a comparative analysis by showing how many data fall under a specific range. Any idea as how to do it?
Thanks Alex

3 Comments

You can change the transparancy of the bars of the second histogram using the 'FaceAlpha' parameter to create a visible overlay as follows:
hist1 = histogram( ..., 'EdgeColor', 'blue', 'FaceColor', 'blue' );
hold on;
hist2 = histogram( ..., 'EdgeColor', 'green', 'FaceColor', 'green', 'FaceAlpha', 0.2 );
This is not working in following code. I am using it exactly as mentioned above but it shows the second histogram only. Can you help ?
% MATLAB R2019a
% Setup
N = [1:5 10 20 40];
LB = 0;
UB = 3;
n = 10000;
% Generate random variates
X = LB + (UB - LB)*rand(max(N),n);
Sn = cumsum(X);
mu = 1.5;
sigma = .75;
S_1 = mu + sigma.*randn(n, 1)
hist1= histogram(Sn(1,:),'Normalization','pdf','EdgeColor', 'blue', 'FaceColor', 'blue')
hold on
hist2 = histogram(S_1(:), 'EdgeColor', 'green', 'FaceColor', 'green', 'FaceAlpha', 0.2);
Use subplot to put them into different axes.

Sign in to comment.

 Accepted Answer

The histograms will tell you that - how many counts in each range. Use histogram() for visualization, or histcounts() and bar().

3 Comments

Thank you Image Analyst. Indeed, I have two datasets (Nx1). For both the datasets, I want to see the number of counts in a specific range. If I use hold on and plot the histograms, it gets overlapped and it is not easy to visualize the difference.
So, I was wondering if I can introduce some sort of transparency or sort of 3D plot.

Here is an example of using Image Analyst's idea of using both histcounts and bar:

x = randn(2000,1);
y = 0.1 + randn(2000,1);
binRange = -3:0.5:3;
hcx = histcounts(x,[binRange Inf]);
hcy = histcounts(y,[binRange Inf]);
figure
bar(binRange,[hcx;hcy]')
Thanks a lot "the cyclist".

Sign in to comment.

More Answers (1)

As shown in the documentation for the histogram histogram, you can plot two overlapping histograms on one figure like this
x = randn(2000,1);
y = 1 + randn(5000,1);
h1 = histogram(x);
hold on
h2 = histogram(y);
If you have the Statistics and Machine Learning Toolbox, you can also use the Kolmogorov-Smirnov test to determine whether the CDFs of the two distributions are statistically different.

4 Comments

Thank you cyclist for the answer. Yes, I was using the hold on command. Unfortunately, it is difficult to visualize when I want to check number of counts in a range. So, I wondering if I could introduce any transparency or maybe plot 3D?
Hallo Matlab community
I would like to plot two histograms from two different datasets on the same graph (overlapping and transparent), but each of the histograms containing the respective fit curve.
I tried to use the histfit command on each dataset but was unsuccessful.
I ask for help please
Thank you very much, I will proceed as you advise.
I thank you deeply.
Milagre MANHIQUE

Sign in to comment.

Categories

Products

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!