Skip to content

Cookie preferences

We use cookies for our own analytics, to see how our campaigns perform and, if you allow it, to load content from other services such as the Google site search. We never sell your data. Necessary cookies keep the site working and cannot be switched off. See our Cookie Policy for details and our Privacy Policy for how we handle personal data.

Security, load balancing and remembering your cookie choice.

Show us which pages people read, how they find the site and where they get stuck, so we can improve it (Google Analytics, Microsoft Clarity).

Show us which of our ad campaigns bring visitors to the site and remember the campaign or partner link you arrived from (Google Ads, LinkedIn, Meta, partner program). We do not use these cookies to build advertising profiles.

Load the site search from Google when you use it. Google sets its own cookies and shows ads in the search results.

© 2026 The ThingsBoard Authors
22.6k Try for free

ThingsBoard Cloud

Choose your data region

Your data stays in the region you choose, for residency and compliance. No credit card required.

Rather run it yourself? Install on your own servers

Distribution histogram

  • Widget
  • 5 installs
  • v1.0.0
  • Oct 20, 2026
  • MIT license
  • v4.2+

A line chart says what a reading did; this says what it usually is. Every reading in the dashboard time window is sorted into bins and drawn as bars, so the shape of the data shows itself: one peak or two, a long tail to one side, a process sitting against its limit. Percentile lines mark where half and where almost all of the readings fall, limits color the bars beyond them, and the line underneath counts how much of the period went out of range.

Widget Type
  • Timeseries
Category
  • Charts & Graphs

Who it’s for

Anyone who has looked at a line chart of a reading for a month and still cannot say what that reading normally is. A quality engineer asking how much of the shift ran outside tolerance, a facilities manager who suspects a room is being heated to two different setpoints by two different controllers, an analyst deciding where to put an alarm threshold so it fires on the real tail and not on the ordinary day. The trend answers what happened at noon; this answers what the process does.

What it does

A compressor logging its discharge temperature every ten seconds: 2 160 readings in the window, piled into eighteen bars. The peak sits at 73 °C, half the readings are under 72.8 °C, and the shape leans right — a tail that crosses the upper limit of 80 °C on 1.2% of the readings, drawn in red so the part that matters is the part that stands out.

  • Shows the shape of the data, which a trend line cannot. One peak or two, a long tail to one side, a process pressed up against its limit — each is a different problem, and each looks the same on a chart of value against time.
  • Counts how much of the period went out of tolerance, rather than only showing that it did. A threshold line on a trend says it happened; this says 1.2%.
  • Marks the percentiles people actually quote. The median says what is typical, p95 says what to size for, and both are drawn on the chart and printed under it.
  • Picks its own bins from the spread of the readings, so a single far outlier cannot flatten the distribution into one bar, and never bins finer than the step the readings arrive in, so a sensor reporting one decimal does not come out as a comb of gaps.
  • Compares two periods honestly when they have different numbers of readings — set the bars to the share of readings and fix the range, and the two charts can be read side by side.
  • Describes one reading from one device. It does not overlay two keys or pool several devices into one distribution: a histogram of a pump and a compressor together describes neither of them.

How to set up

Data keys

Add a single numeric key from a single device. Every reading of that key inside the dashboard time window is counted, so set the window to the period you want described, and leave the aggregation at None — an averaged series is a different, smoother distribution than the one the sensor actually produced.

  • One numeric key — Timeseries or Attribute. Its readings are what the bars count. Its units and decimals come from the key itself, so the widget has no copy of them to keep in step.
  • A key with no readings in the window — the card shows No readings in this period instead of an empty chart.
  • Gaps in the series — a missing reading is skipped rather than counted as a zero, so a device that drops out does not grow a bar at the bottom of the scale.

Bins

  • Bin count — empty by default, which picks a count between 5 and 30 from the spread of the readings. Set it when you are comparing two cards and need both to bin the same way.
  • Range start — empty by default, which starts at the lowest reading. A range you type is a window, not a clamp: a reading below it is reported under the chart rather than piled onto the first bar.
  • Range end — empty by default, which ends at the highest reading.

Limits

  • Lower limit — empty by default. Bars below it are drawn in the out of limits color, and the share of readings beneath it is printed under the chart.
  • Upper limit — empty by default. Bars above it are treated the same way. Set one, the other, or both.

How to customize

  • To compare two periods of different length — set Bar values to Share of readings, from Count of readings, and give both cards the same range.
  • To print the value above every bar — turn on Label each bar, off by default. The hover tooltip always carries it.
  • To match the warning color to your dashboard — set Out of limits color, red by default.
  • To mark different percentiles — edit Percentile lines, 50, 95 by default. Up to three, comma separated; empty draws none.
  • To hide the line of statistics under the chart — turn off Summary line, on by default. The chart keeps its percentile lines either way.

Tips

  • Set the limits to the ones the process is actually judged against, not to round numbers. The share printed under the chart is then a number that can go in a report.
  • Two peaks almost always mean two populations in one series — day shift and night shift, two setpoints, a sensor that was replaced mid-window. Narrow the time window until one of them disappears to find out which.
  • Use p95 rather than the maximum when sizing anything. The maximum is a single reading and often a glitch; p95 is where the process really reaches.
  • A fixed Range start and Range end keep the axis still while the data moves, which makes the card readable on a wall display where nobody is watching the numbers change.
  • Pair it with a trend chart of the same key. The trend says when the process moved; this says whether the move was unusual.

Share Your Widget with the Community

Built a custom widget? Export it as a JSON from ThingsBoard and publish it to the IoT Hub through a simple 4-step wizard (Upload, Listing, Readme, Review & Submit). Share it with thousands of ThingsBoard developers worldwide and get featured in the catalog.