Smart.ComparisonChart puts like values side by side: which is the biggest, and by how much.

Energy per line, output per shift, downtime per cause, the share of each product in a day. A trend answers how something moved; this answers the other question a production screen is asked. Every figure is also in a table a screen reader reads, so the chart is never only a picture.

Energy by line, against a budget

Bars run sideways so the names read without tilting a head. The budget is a dashed line and a bar past it takes the warning colour; nothing else is coloured, because colour on an operator screen is kept for what is wrong. The meters report every two seconds through push(), which is what Connect.stream() calls with one record per interval.

Downtime by cause, as a Pareto chart

pareto sorts worst first and draws the running share, because "which few causes are most of the downtime" is the question a downtime chart exists to answer. Here the first three are four fifths of it.

Shares of one whole

A donut, with the total in the hole, for when the share is the point. Past maxSlices the smallest items fold into one "other" slice rather than into slivers nobody can compare.