Reputation: 23
I was trying to find out, how to plot a cumulative distribution function (cdf) with specific x values but was not successful.
For example, if the dataset is:
x = [2.50 5.21 7.67 8.43 9.15 11.47 14.59 21.45];
y = [0.20 0.09 0.15 0.13 0.17 0.04 0.7 0.15]; % (total 1)
the graph shape definitely looks wrong, when I use y = cdfplot(x)
.
I also plotted the graph with cumsum(y)
and x
to check the shape and it looks fine, but I would like to know, if there is any code which plots cumulative distribution plots.
Upvotes: 2
Views: 1167
Reputation: 18895
There's the stairs
function for creating "stairstep graphs", which should be exactly what you want, incorporating your cumsum(y)
idea.
Please see the following code snippet. I added two additional points for the start and end of some interval, here [0 ... 25]
. Also, your values in y
sum up to something larger than 1, so I modified these values, too.
x = [0 2.50 5.21 7.67 8.43 9.15 11.47 14.59 21.45 25];
y = [0 0.10 0.09 0.05 0.10 0.14 0.04 0.4 0.08 0];
stairs(x, cumsum(y));
xlim([-1 26]);
ylim([-0.2 1.2]);
That'd be the output (Octave 5.1.0, but also tested with MATLAB Online):
Hope that helps!
Upvotes: 3