A four-state quantile-quantile plot that ranks the sample itself — ppoints plotting positions, a resistant quartile reference line, a pointwise order-statistic band, and tail departures named on the plot instead of left to the eye.
Preview in your theme
Loading preview…
This component is part of Pro
The install command, prompt and concept map are included with a Pro license — one purchase unlocks every Pro component, forever.
status="ready" · 200 checkout requests against a normal, quartile line, 95% pointwise band. The count alone would say nothing is wrong — 6 of 200 outside a band that expects about 10 — but the upper tail averages 2.6 band widths out, and the four requests the card names (462, 570, 613 and 1,162 ms) are the whole finding. Hover a dot, or tab into the plot: Tab lands on the largest departure, arrows walk the ranks, Home and End jump to the two extremes.
Checkout latency against normal
Against a normal distribution · quartile line · 95% pointwise band · 200 requests
Mean (intercept)
317.1 ms
SD (slope)
36.5 ms
Requests
200
Outside the band
6 of 200
The upper tail runs past the band; the lower tail tracks a normal distribution. 6 of 200 fall outside the 95% pointwise band — about 10 would by chance alone.
one request
outside the band
quartile line
95% pointwise band
Point at a dot, or tab into the plot and use the arrow keys, for the reading behind it. Click or press Enter to pin one; Escape releases it.
Checkout latency against normal: 200 requests against a normal distribution, ranked and paired with the quantile the reference puts at that rank. The quartile line puts the mean at 317.1 ms and the standard deviation at 36.5 ms. 6 of 200 fall outside the 95% pointwise band — about 10 would by chance alone. The upper tail runs past the band; the lower tail tracks a normal distribution. Largest departures: req-bfd1e2 at 462.3 ms, req-6a7abc at 569.8 ms, req-c1a8e1 at 612.5 ms, req-e393eb at 1,162.2 ms. The rows below are the 6 observations outside the band.
Request
Rank
Normal quantile (z)
Observed
Expected on the line
Departure in band widths
Region
req-ed284b
195 of 200
1.92
412.7 ms
387.2 ms
1.95
upper tail, outside the band
req-fa8206
196 of 200
2
440.5 ms
390.3 ms
3.57
upper tail, outside the band
req-bfd1e2
197 of 200
2.11
462.3 ms
394.1 ms
4.44
upper tail, outside the band
req-6a7abc
198 of 200
2.24
569.8 ms
399 ms
9.82
upper tail, outside the band
req-c1a8e1
199 of 200
2.43
612.5 ms
406 ms
9.79
upper tail, outside the band
req-e393eb
200 of 200
2.81
1,162.2 ms
419.7 ms
22.8
upper tail, outside the band
onObservationSelect → nothing pinned
status="empty" · a valid payload carrying not one reading — a different sentence from "loading" and from a fetch that failed.
Checkout latency against normal
Sample quantiles against a normal distribution
No sample to rank
A Q-Q plot ranks the raw sample and pairs every rank with the quantile a normal distribution puts there, so it needs the individual readings — not a mean, a percentile table or a count per bucket.
status="loading" · four stat placeholders and a diagonal ribbon of dots — the silhouette the plot itself has, so nothing jumps when the numbers land. aria-hidden, no timers, and no pulsing under reduced motion.
Checkout latency against normal
Sample quantiles against a normal distribution
Loading requests
status="error" · the fetch failed. "Try again" only exists when onRetry is passed; clicking it flips this card to ready and moves focus to the card, so focus never lands on <body> when the button unmounts.
Checkout latency against normal
Sample quantiles against a normal distribution
Couldn't load this sample
The data source didn't respond.
A feed nobody validated · 12 rows arrive, 2 carry numbers that cannot be ranked (a NaN out of an empty column, an Infinity out of a divide-by-zero) and the card says so instead of dropping them quietly. Of the 10 that remain, 8 are the same cached 250 ms, so the middle half of the sample is one value and a quartile line would be flat — the chart falls back to least squares and names the line it actually drew. Below 20 readings it also refuses to call the tail shape: three observations per tail is noise, not a finding. The long label elides beside its dot and stays whole in the readout and the table.
A feed nobody validated
Against a normal distribution · least-squares line · 95% pointwise band · 10 requests
Mean (intercept)
308.3 ms
SD (slope)
140.1 ms
Requests
10
Outside the band
3 of 10
3 of 10 fall outside the 95% pointwise band — about 1 would by chance alone.
2 of 12 observations carried no usable number and could not be ranked; the chart is drawn from the remaining 10.
The middle half of the sample is a single value, so a quartile line would be flat; the least-squares line is drawn instead.
one request
outside the band
least-squares line
95% pointwise band
Point at a dot, or tab into the plot and use the arrow keys, for the reading behind it. Click or press Enter to pin one; Escape releases it.
A feed nobody validated: 10 requests against a normal distribution, ranked and paired with the quantile the reference puts at that rank. The least-squares line puts the mean at 308.3 ms and the standard deviation at 140.1 ms. 3 of 10 fall outside the 95% pointwise band — about 1 would by chance alone. Largest departures: req-fix006 at 250 ms, req-fix007 at 250 ms, req-cold-start-eu-west-1-provisioned at 902 ms. The rows below are the 3 observations outside the band.
Request
Rank
Normal quantile (z)
Observed
Expected on the line
Departure in band widths
Region
req-fix006
8 of 10
0.66
250 ms
400.2 ms
-1.27
upper tail, outside the band
req-fix007
9 of 10
1
250 ms
448.5 ms
-1.51
upper tail, outside the band
req-cold-start-eu-west-1-provisioned
10 of 10
1.55
902 ms
525 ms
2.19
upper tail, outside the band
A single reading · rankable, plottable, and nothing a distribution can be read from: a reference line needs two quantile pairs, so there is no line, no band and no verdict — and the card says which of those it is missing rather than rendering an empty box.
First request after deploy
Against a normal distribution · quartile line · 1 request
Mean (intercept)
—
SD (slope)
—
Requests
1
Outside the band
—
A single request has no shape to compare: a reference line needs at least two quantile pairs, so the point is plotted on its own.
one request
Point at a dot, or tab into the plot and use the arrow keys, for the reading behind it. Click or press Enter to pin one; Escape releases it.
First request after deploy: 1 request against a normal distribution, ranked and paired with the quantile the reference puts at that rank. No observation falls outside the band, so the rows below are a rank sample of the whole sorted sample.
Request
Rank
Normal quantile (z)
Observed
Expected on the line
Departure in band widths
Region
req-0c41aa
1 of 1
0
296 ms
296 ms
—
middle of the sample
No spread at all · 40 readings, all exactly 250 ms, from an endpoint someone stubbed. The quartile line is flat, least squares agrees, and with a slope of zero there is no scale for a band: the card states that instead of dividing by it.
A stubbed endpoint
Against a normal distribution · quartile line · 40 requests
Mean (intercept)
250 ms
SD (slope)
—
Requests
40
Outside the band
—
Every request carries the same value, so the sample has no spread: the line is flat and the band has no width.
one request
quartile line
Point at a dot, or tab into the plot and use the arrow keys, for the reading behind it. Click or press Enter to pin one; Escape releases it.
A stubbed endpoint: 40 requests against a normal distribution, ranked and paired with the quantile the reference puts at that rank. No observation falls outside the band, so the rows below are a rank sample of the whole sorted sample. Showing 24 of 40; every request is reachable by tabbing into the plot and using the arrow keys.
Request
Rank
Normal quantile (z)
Observed
Expected on the line
Departure in band widths
Region
req-stub000
1 of 40
-2.24
250 ms
250 ms
—
lower tail
req-stub002
3 of 40
-1.53
250 ms
250 ms
—
lower tail
req-stub003
4 of 40
-1.36
250 ms
250 ms
—
lower tail
req-stub005
6 of 40
-1.09
250 ms
250 ms
—
middle of the sample
req-stub007
8 of 40
-0.89
250 ms
250 ms
—
middle of the sample
req-stub008
9 of 40
-0.8
250 ms
250 ms
—
middle of the sample
req-stub010
11 of 40
-0.64
250 ms
250 ms
—
middle of the sample
req-stub012
13 of 40
-0.49
250 ms
250 ms
—
middle of the sample
req-stub014
15 of 40
-0.35
250 ms
250 ms
—
middle of the sample
req-stub015
16 of 40
-0.29
250 ms
250 ms
—
middle of the sample
req-stub017
18 of 40
-0.16
250 ms
250 ms
—
middle of the sample
req-stub019
20 of 40
-0.03
250 ms
250 ms
—
middle of the sample
req-stub020
21 of 40
0.03
250 ms
250 ms
—
middle of the sample
req-stub022
23 of 40
0.16
250 ms
250 ms
—
middle of the sample
req-stub024
25 of 40
0.29
250 ms
250 ms
—
middle of the sample
req-stub025
26 of 40
0.35
250 ms
250 ms
—
middle of the sample
req-stub027
28 of 40
0.49
250 ms
250 ms
—
middle of the sample
req-stub029
30 of 40
0.64
250 ms
250 ms
—
middle of the sample
req-stub031
32 of 40
0.8
250 ms
250 ms
—
middle of the sample
req-stub032
33 of 40
0.89
250 ms
250 ms
—
middle of the sample
req-stub034
35 of 40
1.09
250 ms
250 ms
—
middle of the sample
req-stub036
37 of 40
1.36
250 ms
250 ms
—
upper tail
req-stub037
38 of 40
1.53
250 ms
250 ms
—
upper tail
req-stub039
40 of 40
2.24
250 ms
250 ms
—
upper tail
reference="exponential" · 140 inter-arrival gaps on a queue. The band is not symmetric here and it is not supposed to be: the exponential is densest at zero, so a rank near the bottom pins its value tightly and the band is a hairline there, while the top opens up. 6 of 140 fall outside where about 7 would by chance — this is what a sample that really does come from the reference looks like, and the verdict says so rather than leaving the reader to guess.
Inter-arrival gaps against exponential
Against an exponential distribution · quartile line · 95% pointwise band · 140 gaps
Shift (intercept)
0.2 s
Mean (slope)
4.4 s
Gaps
140
Outside the band
6 of 140
Neither tail leans out of the band: on average both ends of the sample sit where an exponential distribution puts them. 6 of 140 fall outside the 95% pointwise band — about 7 would by chance alone.
one gap
outside the band
quartile line
95% pointwise band
Point at a dot, or tab into the plot and use the arrow keys, for the reading behind it. Click or press Enter to pin one; Escape releases it.
Inter-arrival gaps against exponential: 140 gaps against an exponential distribution, ranked and paired with the quantile the reference puts at that rank. The quartile line puts the shift at 0.2 s and the mean gap at 4.4 s. 6 of 140 fall outside the 95% pointwise band — about 7 would by chance alone. Neither tail leans out of the band: on average both ends of the sample sit where an exponential distribution puts them. Largest departures: msg-090 at 0.1 s, msg-132 at 0.1 s, msg-077 at 0.2 s, msg-014 at 0.2 s. The rows below are the 6 observations outside the band.
Gap
Rank
Exponential quantile
Observed
Expected on the line
Departure in band widths
Region
msg-090
1 of 140
0
0.1 s
0.2 s
-1.93
lower tail, outside the band
msg-132
2 of 140
0.01
0.1 s
0.2 s
-1.53
lower tail, outside the band
msg-041
4 of 140
0.03
0.2 s
0.3 s
-1.02
lower tail, outside the band
msg-130
5 of 140
0.03
0.2 s
0.3 s
-1.07
lower tail, outside the band
msg-077
6 of 140
0.04
0.2 s
0.4 s
-1.11
lower tail, outside the band
msg-014
7 of 140
0.05
0.2 s
0.4 s
-1.1
lower tail, outside the band
reference="uniform" + line="identity" · 180 experiment p-values, 10 of them from tests that really did move something. A p-value has no location or scale to fit, so y = x IS the null hypothesis and both axes share one domain, which makes the line the diagonal of the plot. The lower tail runs 1.1 band widths below it while the upper tail tracks the diagonal exactly. One of the four named tests is an A/A run: at 5% that is not a bug, it is the false-positive rate, which is the whole reason the band is drawn.
Experiment p-values against uniform
Against a uniform distribution · identity line y = x · 95% pointwise band · 180 tests
Min (intercept)
0
Range (slope)
1
Tests
180
Outside the band
11 of 180
The lower tail runs past the band; the upper tail tracks a uniform distribution. 11 of 180 fall outside the 95% pointwise band — about 9 would by chance alone.
The identity line is a claim rather than a fit, so both axes share one domain and y = x is the diagonal of the plot: a wrong centre or a wrong spread shows up as a shift instead of being absorbed by the line.
one test
outside the band
identity line y = x
95% pointwise band
Point at a dot, or tab into the plot and use the arrow keys, for the reading behind it. Click or press Enter to pin one; Escape releases it.
Experiment p-values against uniform: 180 tests against a uniform distribution, ranked and paired with the quantile the reference puts at that rank. The identity line y = x puts the minimum at 0 and the range at 1. 11 of 180 fall outside the 95% pointwise band — about 9 would by chance alone. The lower tail runs past the band; the upper tail tracks a uniform distribution. Largest departures: settings · test 6 at 0.01, pricing · test 10 at 0.01, checkout · test 1 at 0.01, checkout · A/A 37 at 0.02. The rows below are the 11 observations outside the band.
Test
Rank
Uniform quantile
Observed
Expected on the line
Departure in band widths
Region
search · A/A 8
6 of 180
0.03
0
0.03
-1.08
lower tail, outside the band
search · test 8
7 of 180
0.04
0.01
0.04
-1.08
lower tail, outside the band
onboarding · test 9
8 of 180
0.04
0.01
0.04
-1.19
lower tail, outside the band
pricing · test 4
9 of 180
0.05
0.01
0.05
-1.29
lower tail, outside the band
checkout · test 7
10 of 180
0.05
0.01
0.05
-1.39
lower tail, outside the band
settings · test 6
11 of 180
0.06
0.01
0.06
-1.48
lower tail, outside the band
pricing · test 10
12 of 180
0.06
0.01
0.06
-1.58
lower tail, outside the band
checkout · test 1
13 of 180
0.07
0.01
0.07
-1.64
lower tail, outside the band
checkout · A/A 37
14 of 180
0.08
0.02
0.08
-1.52
lower tail, outside the band
search · A/A 50
15 of 180
0.08
0.02
0.08
-1.48
lower tail, outside the band
inbox · A/A 89
179 of 180
0.99
0.98
0.99
-1.19
upper tail, outside the band
line="least-squares" level={0.99} · the same 200 requests as the first card, and the trap this component defaults away from. Least squares lets the three slowest requests rotate the line: the slope goes from 36.5 to 53.8 ms per z, so the fitted line now runs above the entire body of the sample, 50 perfectly ordinary requests are pushed outside a 99% band that expects about 2, and the tail verdict comes back clean. The outliers hid themselves by helping place the line.
Checkout latency against normal
Against a normal distribution · least-squares line · 99% pointwise band · 200 requests
Mean (intercept)
322.7 ms
SD (slope)
53.8 ms
Requests
200
Outside the band
72 of 200
Neither tail leans out of the band: on average both ends of the sample sit where a normal distribution puts them. 72 of 200 fall outside the 99% pointwise band — about 2 would by chance alone.
50 departures sit in the middle of the sample rather than in a tail, so the disagreement with a normal distribution is not only about extremes.
one request
outside the band
least-squares line
99% pointwise band
Point at a dot, or tab into the plot and use the arrow keys, for the reading behind it. Click or press Enter to pin one; Escape releases it.
Checkout latency against normal: 200 requests against a normal distribution, ranked and paired with the quantile the reference puts at that rank. The least-squares line puts the mean at 322.7 ms and the standard deviation at 53.8 ms. 72 of 200 fall outside the 99% pointwise band — about 2 would by chance alone. Neither tail leans out of the band: on average both ends of the sample sit where a normal distribution puts them. Largest departures: req-a361fc at 360.3 ms, req-6a7abc at 569.8 ms, req-c1a8e1 at 612.5 ms, req-e393eb at 1,162.2 ms. The rows below are the 72 observations outside the band. Showing 24 of 72; every request is reachable by tabbing into the plot and using the arrow keys.
Request
Rank
Normal quantile (z)
Observed
Expected on the line
Departure in band widths
Region
req-0be335
10 of 200
-1.67
255.2 ms
232.9 ms
1.06
lower tail, outside the band
req-22daf8
14 of 200
-1.49
262.3 ms
242.3 ms
1.06
lower tail, outside the band
req-704f95
132 of 200
0.41
331.2 ms
344.5 ms
-1.05
middle of the sample, outside the band
req-f33dd2
135 of 200
0.45
332.9 ms
346.8 ms
-1.09
middle of the sample, outside the band
req-cd5bc8
138 of 200
0.49
334.7 ms
349 ms
-1.12
middle of the sample, outside the band
req-4c2d21
141 of 200
0.53
335.6 ms
351.3 ms
-1.22
middle of the sample, outside the band
req-1dbad8
145 of 200
0.59
336.5 ms
354.5 ms
-1.37
middle of the sample, outside the band
req-1c7580
148 of 200
0.64
337.9 ms
356.9 ms
-1.44
middle of the sample, outside the band
req-d265ea
151 of 200
0.68
341.8 ms
359.4 ms
-1.32
middle of the sample, outside the band
req-f7e0b7
154 of 200
0.73
342.1 ms
362 ms
-1.47
middle of the sample, outside the band
req-f5bd83
157 of 200
0.78
344.3 ms
364.7 ms
-1.49
middle of the sample, outside the band
req-5de693
160 of 200
0.83
347.9 ms
367.5 ms
-1.4
middle of the sample, outside the band
req-af5aae
163 of 200
0.89
350.6 ms
370.4 ms
-1.4
middle of the sample, outside the band
req-ce2fbb
166 of 200
0.94
353.5 ms
373.5 ms
-1.38
middle of the sample, outside the band
req-41bd3a
169 of 200
1
354.2 ms
376.8 ms
-1.52
middle of the sample, outside the band
req-db1174
172 of 200
1.07
355.5 ms
380.2 ms
-1.63
middle of the sample, outside the band
req-3f2f5b
175 of 200
1.14
357.5 ms
383.9 ms
-1.69
middle of the sample, outside the band
req-11deec
178 of 200
1.21
358.7 ms
388 ms
-1.81
middle of the sample, outside the band
req-beacd7
182 of 200
1.33
364.1 ms
394 ms
-1.75
upper tail, outside the band
req-4a4dd3
185 of 200
1.42
368.3 ms
399.2 ms
-1.71
upper tail, outside the band
req-86b302
188 of 200
1.53
372 ms
405.2 ms
-1.72
upper tail, outside the band
req-cd8061
191 of 200
1.67
383.3 ms
412.5 ms
-1.39
upper tail, outside the band
req-fdf7ed
194 of 200
1.85
392.9 ms
422 ms
-1.22
upper tail, outside the band
req-e393eb
200 of 200
2.81
1,162.2 ms
473.7 ms
10.9
upper tail, outside the band
band="none" annotate={0} · the plainest reading of the same sample: a line and the dots, no band and no names. The band legend key, the departure diamonds and the verdict sentence go with the band, because none of them can be computed without one. The location and scale stats come from the line, so they stay; "Outside the band" reads an em dash rather than a zero, because with no band there is nothing to be outside of.
Checkout latency against normal
Against a normal distribution · quartile line · 200 requests
Mean (intercept)
317.1 ms
SD (slope)
36.5 ms
Requests
200
Outside the band
—
one request
quartile line
Point at a dot, or tab into the plot and use the arrow keys, for the reading behind it. Click or press Enter to pin one; Escape releases it.
Checkout latency against normal: 200 requests against a normal distribution, ranked and paired with the quantile the reference puts at that rank. The quartile line puts the mean at 317.1 ms and the standard deviation at 36.5 ms. No observation falls outside the band, so the rows below are a rank sample of the whole sorted sample. Showing 24 of 200; every request is reachable by tabbing into the plot and using the arrow keys.
Request
Rank
Normal quantile (z)
Observed
Expected on the line
Departure in band widths
Region
req-a9e9e8
1 of 200
-2.81
217.6 ms
214.5 ms
—
lower tail
req-0be335
10 of 200
-1.67
255.2 ms
256.1 ms
—
lower tail
req-6efbe8
18 of 200
-1.36
265.4 ms
267.5 ms
—
lower tail
req-9fa06c
27 of 200
-1.11
277.5 ms
276.3 ms
—
middle of the sample
req-fe213c
36 of 200
-0.92
283 ms
283.3 ms
—
middle of the sample
req-4daaa8
44 of 200
-0.78
288 ms
288.5 ms
—
middle of the sample
req-31e665
53 of 200
-0.64
293 ms
293.8 ms
—
middle of the sample
req-09e2cf
62 of 200
-0.5
299 ms
298.7 ms
—
middle of the sample
req-c93dfb
70 of 200
-0.39
302.9 ms
302.7 ms
—
middle of the sample
req-110f74
79 of 200
-0.27
305.5 ms
307.1 ms
—
middle of the sample
req-043cdf
88 of 200
-0.16
309.9 ms
311.3 ms
—
middle of the sample
req-feccee
96 of 200
-0.06
314.3 ms
315 ms
—
middle of the sample
req-afd008
105 of 200
0.06
319.3 ms
319.1 ms
—
middle of the sample
req-7ff2ee
113 of 200
0.16
323.9 ms
322.8 ms
—
middle of the sample
req-2a3553
122 of 200
0.27
326.8 ms
327 ms
—
middle of the sample
req-3a70f9
131 of 200
0.39
331.2 ms
331.4 ms
—
middle of the sample
req-1de4ef
139 of 200
0.5
335.4 ms
335.5 ms
—
middle of the sample
req-1c7580
148 of 200
0.64
337.9 ms
340.3 ms
—
middle of the sample
req-f5bd83
157 of 200
0.78
344.3 ms
345.6 ms
—
middle of the sample
req-0ccd84
165 of 200
0.92
353.2 ms
350.9 ms
—
middle of the sample
req-07dade
174 of 200
1.11
357.4 ms
357.8 ms
—
middle of the sample
req-028b89
183 of 200
1.36
365.3 ms
366.6 ms
—
upper tail
req-cd8061
191 of 200
1.67
383.3 ms
378.1 ms
—
upper tail
req-e393eb
200 of 200
2.81
1,162.2 ms
419.7 ms
—
upper tail
2,400 requests against maxPoints=400 · 403 dots are drawn — the rank sample of 400 plus the 3 named departures, which are forced in so no name is ever printed beside a circle that was not drawn — and the card says so. The line, the band, the counts and the verdict all use the full 2,400: at that n the band is a hairline and the entire top decile sits outside it, which is the same defect the 200-request card shows, now with no room left to argue about it.
Checkout latency, one week
Against a normal distribution · quartile line · 95% pointwise band · 2,400 requests
Mean (intercept)
318.7 ms
SD (slope)
37.5 ms
Requests
403 of 2,400 drawn
Outside the band
251 of 2,400
The upper tail runs past the band; the lower tail tracks a normal distribution. 251 of 2,400 fall outside the 95% pointwise band — about 120 would by chance alone.
Too many requests to give each one its own dot: 403 of 2,400 are drawn as a rank sample — every k-th value of the sorted sample, both extremes and every named departure kept. The line, the band and every figure on this card use all 2,400.
11 departures sit in the middle of the sample rather than in a tail, so the disagreement with a normal distribution is not only about extremes.
one request
outside the band
quartile line
95% pointwise band
Point at a dot, or tab into the plot and use the arrow keys, for the reading behind it. Click or press Enter to pin one; Escape releases it.
Checkout latency, one week: 2,400 requests against a normal distribution, ranked and paired with the quantile the reference puts at that rank. The quartile line puts the mean at 318.7 ms and the standard deviation at 37.5 ms. 251 of 2,400 fall outside the 95% pointwise band — about 120 would by chance alone. The upper tail runs past the band; the lower tail tracks a normal distribution. Largest departures: req-f6c95e at 672.2 ms, req-890afc at 684.8 ms, req-2fd95d at 688.7 ms, req-f47b6a at 700.2 ms. The rows below are the 251 observations outside the band. Showing 24 of 251; every request is reachable by tabbing into the plot and using the arrow keys.