How does one plot a histogram from the histogram counts?

I have produced an array of counts, specifically produced with:
histcounts
the reason I do this is because storing the actual data is way to expensive in terms of storage. So on the fly I update my histcount. Now that I have them, how do I plot the histogram?
----
demo code:
W_hist_counts = zeros(1,D);
for i=2:iter+1
W = get_vector_we_want_stats(W)
%
W_hist_counts = W_hist_counts + histcounts(W,nbins);
end
----

Answers (2)

The most straightforward way is probably to use the bar command.

4 Comments

there is a weird caveat what the number of hist_counts and edges dont agree when returned by hist_counts. Do you know how to fix this?
If the edges are regularly spaced, this is what I do to create a vector of centers for the bar plot:
e = 1:5 % ‘Edges’ Vector
xt = e(1:end-1)+mean(diff(e))/2 % ‘Midpoint’ Vector
e =
1 2 3 4 5
xt =
1.5 2.5 3.5 4.5
also, bar doesn't accept normalization options. I know histcounts does but that forces me to have all the data before I feed it to histcounts, which I don't have because I am in the real of big data. I can produce statistics (like counts) on the fly but not store the whole thing in matlab.
I assume you want to normalize to an overall sum of 1. You should just be able to plot
W_hist_counts/sum(W_hist_counts)
to normalize, right?

Sign in to comment.

histogram() can plot the histogram data (counts vs values) if you pass in the counts and values instead of the data. Otherwise you can do it manually with bar().

Products

Tags

Asked:

on 27 Mar 2017

Commented:

on 28 Mar 2017

Community Treasure Hunt

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

Start Hunting!