A histogram groups your measurement values into bins and shows how many fall in each. It's the simplest way to see whether your process is centered, how much variation it has, and whether the distribution shape is normal or hiding a problem. In SPC, histograms complement control charts: the chart shows trends over time, the histogram shows the overall distribution shape.
How to Read a Histogram
The x-axis shows measurement values. The y-axis shows how many data points fall in each bin. A well-behaved process produces a bell curve (normal distribution) centered between the spec limits.
Three things to look at:
Center. Is the peak of the distribution aligned with the target value, or shifted toward one spec limit? A shifted histogram means the process mean has drifted.
Spread. How wide is the distribution relative to the spec limits? A narrow distribution within wide spec limits means high capability (high Cp). A distribution that fills or exceeds the spec window means low capability.
Shape. A symmetric bell curve is normal. Anything else is a signal worth investigating.
Distribution Shapes and What They Mean
| Shape | What It Looks Like | Likely Cause | Action |
|---|---|---|---|
| Normal (bell curve) | Symmetric, single peak centered | Process is stable and predictable | Monitor. This is the target state. |
| Shifted normal | Bell curve off-center toward one limit | Process mean has drifted | Re-center: adjust calibration, tool offset, or recipe |
| Skewed right | Tail extends toward higher values | Physical constraint on the low end, or log-normal process | Check if the spec is appropriate. Some measurements (like response time) are naturally skewed. |
| Skewed left | Tail extends toward lower values | Physical constraint on the high end | Same as above, opposite direction |
| Bimodal (two peaks) | Two humps instead of one | Two populations mixed | Separate data by station, operator, shift, or component lot. Each population may be fine on its own. |
| Truncated | Distribution cut off sharply at one end | Parts are being screened, sorted, or the measurement saturates | Check if screening is intentional. If it is, standard Cpk formulas may overestimate capability. |
| Flat (uniform) | No clear peak, roughly even across range | Process is not controlled | Major investigation needed. Something is varying widely without control. |
| Comb (alternating high/low bins) | Jagged pattern | Measurement resolution too coarse, or rounding | Increase instrument resolution or check data rounding |
The Normal Curve Overlay
TofuPilot overlays a normal distribution curve (Gaussian) on the histogram. This overlay uses the calculated mean and standard deviation from your data. When the histogram bars closely follow the curve, your data is approximately normal and standard capability formulas (Cp, Cpk) apply directly.
When the bars diverge from the curve (heavy tails, skew, multiple peaks), the standard formulas may not accurately represent your process. The histogram makes this visible at a glance.
Specification Limits on the Histogram
TofuPilot draws USL and LSL as vertical lines on the histogram when limits are defined. This shows you:
- How much of the distribution falls within spec
- Whether the distribution is centered between the limits
- How much margin exists on each side
If the distribution tails extend past a spec line, some units are failing on that side. The visual makes it obvious which side needs attention.
Mean and Sigma Lines
The histogram also shows the process mean (center line) and sigma bands (±1σ, ±2σ, ±3σ). In a normal distribution:
| Range | Contains |
|---|---|
| ±1σ | 68.3% of data |
| ±2σ | 95.4% of data |
| ±3σ | 99.7% of data |
If the 3σ lines are inside the spec limits, the process is capable (Cp > 1.0). If they extend past the spec limits, the process variation exceeds the spec window.
Feeding Histogram Data to TofuPilot
Histograms require numeric measurements with enough data points to form a meaningful distribution. Define measurements with limits in your test code.
import openhtf as htf
from openhtf.util import units
from tofupilot.openhtf import TofuPilot
@htf.measures(
htf.Measurement("output_voltage")
.in_range(minimum=3.25, maximum=3.35)
.with_units(units.VOLT),
htf.Measurement("clock_frequency")
.in_range(minimum=7.99, maximum=8.01)
.with_units(units.HERTZ),
)
def measure_board(test):
test.measurements.output_voltage = 3.301
test.measurements.clock_frequency = 8.002
def main():
test = htf.Test(measure_board)
with TofuPilot(test):
test.execute(test_start=lambda: "UNIT-0001")
if __name__ == "__main__":
main()Open the Process Control page, select a numeric measurement, and the histogram appears alongside the control chart. The normal curve, spec limits, and mean line render automatically. Right-click on a histogram bin to select data points in that value range or filter the view.
Using Histograms for Process Improvement
Histograms are diagnostic tools. When you spot a non-normal shape, investigate:
Bimodal? Split the data. Filter by station, operator, or batch in TofuPilot's sidebar. Each subset may form its own normal distribution, revealing the source of the split.
Skewed? Check whether the measurement is inherently bounded (you can't have negative leakage current) or whether a process constraint is causing the asymmetry.
Shifted? Compare to the target. If the peak is close to one spec limit, re-center the process before it starts producing failures.
Too wide? The distribution fills the spec window. Reduce variation (better fixtures, tighter component specs, more stable environment) or widen limits if the product design allows it.