Flow Density
<zyna-density>
Each time period is drawn as a vertical density silhouette (a violin), so reading left-to-right shows the whole distribution shifting, splitting, or tightening — everything a line-of-averages hides. Medians are connected by a flowing spine. Densities are estimated with an Epanechnikov kernel.
Demo
Response-time distribution · monthly
<zyna-density y-label="Response time (ms)" data='[ {"label":"Jan","values":[104,110,113,116,118,119, ...]}, {"label":"Feb","values":[118,125,129,132,134,136, ...]}, {"label":"Mar","values":[137,147,152,156,159,162, ...]}, {"label":"Apr","values":[155,167,174,179,183,187, ...]} ]' ></zyna-density>
Usage Tips
- Pass raw samples, not summaries — the chart's job is to show the shape a mean would hide.
- Lock
y-min/y-maxacross charts so the silhouettes are directly comparable. - A larger
bandwidthsmooths the shape; a smaller one exposes bumps and bimodality. - Watch the median spine drift left-to-right — where it moves against a widening silhouette is the interesting bit.