RunMat
GitHub

histogram — Create histogram objects with bin-edge semantics, normalization controls, and MATLAB histogram workflows.

histogram is the object-style histogram builtin in RunMat. Unlike legacy hist, it uses bin-edge semantics, supports normalization workflows through the histogram evaluation path, and returns a histogram handle that works with get and set as part of the plotting object model.

How histogram works in RunMat

  • histogram(data) creates a histogram object handle.
  • When you pass explicit bins through histogram-style arguments, they are treated as bin edges rather than bin centers.
  • Normalization modes such as count, probability, percentage, density-style variants, and cumulative forms are part of the evaluation path.
  • The returned histogram handle exposes properties like bin edges, counts, and normalization through get and accepts updates through set where supported.
  • This is the preferred histogram API for new code; use hist only when you intentionally want legacy center-based MATLAB semantics.

Examples

Create a histogram object from data

data = randn(1, 1000);
h = histogram(data);

Expected output:

% h is a histogram object handle

Use explicit bin edges and inspect the handle

data = randn(1, 500);
edges = -3:0.25:3;
h = histogram(data, 'BinEdges', edges);
get(h, 'BinEdges');

Apply normalization through histogram semantics

data = randn(1, 500);
h = histogram(data, 'Normalization', 'probability');
get(h, 'Normalization')

Expected output:

ans =
    'probability'

Overlaid distributions

a = 2 + 1.2*randn(1, 5000);
b = 4 + 0.8*randn(1, 5000);

h1 = histogram(a, 'BinEdges', -2:0.25:8, 'Normalization', 'probability');
set(h1, 'DisplayName', 'Process A');
hold on;
h2 = histogram(b, 'BinEdges', -2:0.25:8, 'Normalization', 'probability');
set(h2, 'DisplayName', 'Process B');
hold off;

title('Distribution Comparison');
xlabel('Measurement');
ylabel('Probability');
legend;
grid on;
Expected output:
Overlaid distributions

FAQ

How do I set a specific number of bins?

Pass the bin count as a second positional argument or use the 'NumBins' name-value pair.

data = randn(1, 1000);
histogram(data, 30);                    % 30 bins
histogram(data, 'NumBins', 50);         % 50 bins
histogram(data, 'BinEdges', -3:0.1:3); % exact edges

Explicit BinEdges gives you full control over where each bin starts and ends.

How do I overlay two distributions on the same axes?

Use hold on between histogram calls and set 'Normalization' to 'probability' so both distributions are on a comparable scale.

histogram(randn(1,1000), 'Normalization', 'probability');
hold on;
histogram(randn(1,1000) + 2, 'Normalization', 'probability');
legend('dist A', 'dist B');

What's the difference between histogram and hist?

histogram is the modern API: it uses bin-edge semantics, returns a handle object you can inspect with get/set, and supports normalization modes like 'probability' and 'pdf'. hist is the legacy API that interprets a second vector argument as bin centers. Use histogram for new code unless you specifically need center-based binning from a legacy workflow.

These functions work well alongside histogram. Each page has runnable examples you can try in the browser.

hist, bar, get, set

More plotting resources

Open-source implementation

Unlike proprietary runtimes, every RunMat function is open-source. Read exactly how histogram works, line by line, in Rust.

About RunMat

RunMat is an open-source runtime that executes MATLAB-syntax code — faster, on any GPU, with no license required.

  • Simulations that took hours now take minutes. RunMat automatically optimizes your math for GPU execution on Apple, Nvidia, and AMD hardware. No code changes needed.
  • Start running code in seconds. Open the browser sandbox or download a single binary. No license server, no IT ticket, no setup.
  • A full development environment. GPU-accelerated 2D and 3D plotting, automatic versioning on every save, and a browser IDE you can share with a link.

Getting started · Benchmarks · Pricing

Try RunMat for free

Open the sandbox and start running MATLAB code in seconds. No account required.