Distributions, mid-sentence

Hover any spark — the bin or value line under the cursor highlights (bins brighten, lines thicken) and shows a tooltip. Pure SVG — no JavaScript, no image files.

Show code
import pavement.svg as psvg

# A spark is an SVG string — drop it anywhere in HTML.
spark = psvg.spark(values, bins=8, color="#c0392b")

# bins=None draws a rug (one line per distinct value):
rug = psvg.spark(values, bins=None)

# Customize height, colors, hover formatting:
psvg.spark(prices, bins=8, height="3em", value_format=lambda v: f"${v:,.0f}")

Request latency kept a heavy tail pavement sparkline of 400 values0.00933 to 4.57 p0 to p12 12% (49 of 400 values)4.57 to 10 p12 to p25 12% (50 of 400 values)10 to 16.9 p25 to p38 12% (50 of 400 values)16.9 to 25.4 p38 to p50 12% (50 of 400 values)25.4 to 34.6 p50 to p62 12% (50 of 400 values)34.6 to 56 p62 to p75 12% (50 of 400 values)56 to 83 p75 to p88 12% (50 of 400 values)83 to 199 p88 to p100 12% (49 of 400 values)0.00933 p0 <1% (1 of 400 values)4.57 p12 0% (0 of 400 values)10 p25 0% (0 of 400 values)16.9 p38 0% (0 of 400 values)25.4 p50 0% (0 of 400 values)34.6 p62 0% (0 of 400 values)56 p75 0% (0 of 400 values)83 p88 0% (0 of 400 values)199 p100 <1% (1 of 400 values) while CPU stayed mid-range and symmetric pavement sparkline of 400 values0 to 25.1 p0 to p12 12% (49 of 400 values)25.1 to 31.4 p12 to p25 12% (50 of 400 values)31.4 to 35.9 p25 to p38 12% (50 of 400 values)35.9 to 38.3 p38 to p50 12% (50 of 400 values)38.3 to 41.9 p50 to p62 12% (50 of 400 values)41.9 to 45.8 p62 to p75 12% (50 of 400 values)45.8 to 51.3 p75 to p88 12% (50 of 400 values)51.3 to 71.5 p88 to p100 12% (49 of 400 values)0 p0 <1% (1 of 400 values)25.1 p12 0% (0 of 400 values)31.4 p25 0% (0 of 400 values)35.9 p38 0% (0 of 400 values)38.3 p50 0% (0 of 400 values)41.9 p62 0% (0 of 400 values)45.8 p75 0% (0 of 400 values)51.3 p88 0% (0 of 400 values)71.5 p100 <1% (1 of 400 values); exam scores pavement sparkline of 300 values43.3 to 58 p0 to p10 10% (29 of 300 values)58 to 63.5 p10 to p20 10% (30 of 300 values)63.5 to 66.1 p20 to p30 10% (30 of 300 values)66.1 to 69 p30 to p40 10% (30 of 300 values)69 to 72.1 p40 to p50 10% (30 of 300 values)72.1 to 74.4 p50 to p60 10% (30 of 300 values)74.4 to 77.8 p60 to p70 10% (30 of 300 values)77.8 to 80.9 p70 to p80 10% (30 of 300 values)80.9 to 85.4 p80 to p90 10% (30 of 300 values)85.4 to 100 p90 to p100 9% (28 of 300 values)43.3 p0 <1% (1 of 300 values)58 p10 0% (0 of 300 values)63.5 p20 0% (0 of 300 values)66.1 p30 0% (0 of 300 values)69 p40 0% (0 of 300 values)72.1 p50 0% (0 of 300 values)74.4 p60 0% (0 of 300 values)77.8 p70 0% (0 of 300 values)80.9 p80 0% (0 of 300 values)85.4 p90 0% (0 of 300 values)100 p100 1% (2 of 300 values) clustered above the pass mark. Commute times split into two crowds pavement sparkline of 360 values7.9 to 8.74 p0 to p12 12% (44 of 360 values)8.74 to 9.03 p12 to p25 12% (45 of 360 values)9.03 to 9.27 p25 to p38 12% (45 of 360 values)9.27 to 12.9 p38 to p50 12% (45 of 360 values)12.9 to 17.5 p50 to p62 12% (45 of 360 values)17.5 to 18.1 p62 to p75 12% (45 of 360 values)18.1 to 18.7 p75 to p88 12% (45 of 360 values)18.7 to 20 p88 to p100 12% (44 of 360 values)7.9 p0 <1% (1 of 360 values)8.74 p12 0% (0 of 360 values)9.03 p25 0% (0 of 360 values)9.27 p38 0% (0 of 360 values)12.9 p50 0% (0 of 360 values)17.5 p62 0% (0 of 360 values)18.1 p75 0% (0 of 360 values)18.7 p88 0% (0 of 360 values)20 p100 <1% (1 of 360 values). A pile-up raises a tassel: survey satisfaction bunched on one answer pavement sparkline of 250 values1 to 2 0% (0 of 250 values)2 to 3 0% (0 of 250 values)3 to 4 0% (0 of 250 values)4 to 5 0% (0 of 250 values)5 to 5 0% (0 of 250 values)1 p0 14% (36 of 250 values)2 p20 10% (24 of 250 values)3 p40 19% (48 of 250 values)4 p60 33% (82 of 250 values)5 p80 to p100 24% (60 of 250 values), and the error budget sat at zero most days pavement sparkline of 300 values0 to 0 0% (0 of 300 values)0 to 0 0% (0 of 300 values)0 to 0.214 p33 to p50 3% (10 of 300 values)0.214 to 1.35 p50 to p67 17% (50 of 300 values)1.35 to 3.03 p67 to p83 17% (50 of 300 values)3.03 to 15.7 p83 to p100 16% (49 of 300 values)0 p0 to p33 47% (140 of 300 values)0.214 p50 0% (0 of 300 values)1.35 p67 0% (0 of 300 values)3.03 p83 0% (0 of 300 values)15.7 p100 <1% (1 of 300 values). With bins=None a spark becomes a rug 500 values, -4.29 to 2.67pavement sparkline of 500 values, versus the binned summary of the same data pavement sparkline of 500 values-4.29 to -1.04 p0 to p17 16% (82 of 500 values)-1.04 to -0.44 p17 to p33 16% (82 of 500 values)-0.44 to 0.0591 p33 to p50 17% (83 of 500 values)0.0591 to 0.475 p50 to p67 17% (83 of 500 values)0.475 to 0.938 p67 to p83 16% (82 of 500 values)0.938 to 2.67 p83 to p100 16% (82 of 500 values)-4.29 p0 <1% (1 of 500 values)-1.04 p17 <1% (1 of 500 values)-0.44 p33 <1% (1 of 500 values)0.0591 p50 0% (0 of 500 values)0.475 p67 <1% (1 of 500 values)0.938 p83 <1% (1 of 500 values)2.67 p100 <1% (1 of 500 values).

A rug adapts its hover to its size. A handful of build times pavement sparkline of 12 values3.1 to 3.4 0% (0 of 12 values)3.4 to 3.8 0% (0 of 12 values)3.8 to 4 0% (0 of 12 values)4 to 4.2 0% (0 of 12 values)4.2 to 4.5 0% (0 of 12 values)4.5 to 5.1 0% (0 of 12 values)5.1 to 5.9 0% (0 of 12 values)5.9 to 6.2 0% (0 of 12 values)6.2 to 7 0% (0 of 12 values)7 to 9.5 0% (0 of 12 values)9.5 to 12 0% (0 of 12 values)3.1 p0 8% (1 of 12 values)3.4 p9 8% (1 of 12 values)3.8 p18 8% (1 of 12 values)4 p27 8% (1 of 12 values)4.2 p36 8% (1 of 12 values)4.5 p45 8% (1 of 12 values)5.1 p55 8% (1 of 12 values)5.9 p64 8% (1 of 12 values)6.2 p73 8% (1 of 12 values)7 p82 8% (1 of 12 values)9.5 p91 8% (1 of 12 values)12 p100 8% (1 of 12 values) is a small rug — hover any value to read it and its percentile. The 500-point rug above 500 values, -4.29 to 2.67pavement sparkline of 500 values is too dense for that, so it shows one whole-spark summary instead; force per-value hover with tick_hover_limit=None, or turn it off with 0.

On a dark panel the sparks inherit the light text color through currentColor: scores pavement sparkline of 300 values43.3 to 58 p0 to p10 10% (29 of 300 values)58 to 63.5 p10 to p20 10% (30 of 300 values)63.5 to 66.1 p20 to p30 10% (30 of 300 values)66.1 to 69 p30 to p40 10% (30 of 300 values)69 to 72.1 p40 to p50 10% (30 of 300 values)72.1 to 74.4 p50 to p60 10% (30 of 300 values)74.4 to 77.8 p60 to p70 10% (30 of 300 values)77.8 to 80.9 p70 to p80 10% (30 of 300 values)80.9 to 85.4 p80 to p90 10% (30 of 300 values)85.4 to 100 p90 to p100 9% (28 of 300 values)43.3 p0 <1% (1 of 300 values)58 p10 0% (0 of 300 values)63.5 p20 0% (0 of 300 values)66.1 p30 0% (0 of 300 values)69 p40 0% (0 of 300 values)72.1 p50 0% (0 of 300 values)74.4 p60 0% (0 of 300 values)77.8 p70 0% (0 of 300 values)80.9 p80 0% (0 of 300 values)85.4 p90 0% (0 of 300 values)100 p100 1% (2 of 300 values), latency pavement sparkline of 400 values0.00933 to 4.57 p0 to p12 12% (49 of 400 values)4.57 to 10 p12 to p25 12% (50 of 400 values)10 to 16.9 p25 to p38 12% (50 of 400 values)16.9 to 25.4 p38 to p50 12% (50 of 400 values)25.4 to 34.6 p50 to p62 12% (50 of 400 values)34.6 to 56 p62 to p75 12% (50 of 400 values)56 to 83 p75 to p88 12% (50 of 400 values)83 to 199 p88 to p100 12% (49 of 400 values)0.00933 p0 <1% (1 of 400 values)4.57 p12 0% (0 of 400 values)10 p25 0% (0 of 400 values)16.9 p38 0% (0 of 400 values)25.4 p50 0% (0 of 400 values)34.6 p62 0% (0 of 400 values)56 p75 0% (0 of 400 values)83 p88 0% (0 of 400 values)199 p100 <1% (1 of 400 values), rug 500 values, -4.29 to 2.67pavement sparkline of 500 values.

endpointp50p99distribution
/search28210pavement sparkline of 400 values0.00933 to 4.57 p0 to p12 12% (49 of 400 values)4.57 to 10 p12 to p25 12% (50 of 400 values)10 to 16.9 p25 to p38 12% (50 of 400 values)16.9 to 25.4 p38 to p50 12% (50 of 400 values)25.4 to 34.6 p50 to p62 12% (50 of 400 values)34.6 to 56 p62 to p75 12% (50 of 400 values)56 to 83 p75 to p88 12% (50 of 400 values)83 to 199 p88 to p100 12% (49 of 400 values)0.00933 p0 <1% (1 of 400 values)4.57 p12 0% (0 of 400 values)10 p25 0% (0 of 400 values)16.9 p38 0% (0 of 400 values)25.4 p50 0% (0 of 400 values)34.6 p62 0% (0 of 400 values)56 p75 0% (0 of 400 values)83 p88 0% (0 of 400 values)199 p100 <1% (1 of 400 values)
/checkout41156pavement sparkline of 400 values0 to 25.1 p0 to p12 12% (49 of 400 values)25.1 to 31.4 p12 to p25 12% (50 of 400 values)31.4 to 35.9 p25 to p38 12% (50 of 400 values)35.9 to 38.3 p38 to p50 12% (50 of 400 values)38.3 to 41.9 p50 to p62 12% (50 of 400 values)41.9 to 45.8 p62 to p75 12% (50 of 400 values)45.8 to 51.3 p75 to p88 12% (50 of 400 values)51.3 to 71.5 p88 to p100 12% (49 of 400 values)0 p0 <1% (1 of 400 values)25.1 p12 0% (0 of 400 values)31.4 p25 0% (0 of 400 values)35.9 p38 0% (0 of 400 values)38.3 p50 0% (0 of 400 values)41.9 p62 0% (0 of 400 values)45.8 p75 0% (0 of 400 values)51.3 p88 0% (0 of 400 values)71.5 p100 <1% (1 of 400 values)
/upload63540pavement sparkline of 360 values7.9 to 8.74 p0 to p12 12% (44 of 360 values)8.74 to 9.03 p12 to p25 12% (45 of 360 values)9.03 to 9.27 p25 to p38 12% (45 of 360 values)9.27 to 12.9 p38 to p50 12% (45 of 360 values)12.9 to 17.5 p50 to p62 12% (45 of 360 values)17.5 to 18.1 p62 to p75 12% (45 of 360 values)18.1 to 18.7 p75 to p88 12% (45 of 360 values)18.7 to 20 p88 to p100 12% (44 of 360 values)7.9 p0 <1% (1 of 360 values)8.74 p12 0% (0 of 360 values)9.03 p25 0% (0 of 360 values)9.27 p38 0% (0 of 360 values)12.9 p50 0% (0 of 360 values)17.5 p62 0% (0 of 360 values)18.1 p75 0% (0 of 360 values)18.7 p88 0% (0 of 360 values)20 p100 <1% (1 of 360 values)