Skip to content
commit-766c8d6756a1

Violin chart

Complete distribution shapes, centers, spread, skew, and multiple peaks from named samples.

Purpose
Compare distribution shape, center, spread, skew, and multiple peaks across named samples.
Use when
Use when the sample distribution itself matters, not just a summary statistic.
Avoid when
Avoid for very small samples or when a simple five-number summary answers the question.
Equivalent data
The adjacent statistical summary preserves sample count, minimum, quartiles, median, mean, and maximum without relying on shape or color.
Exact sample statistics
DistributionSamplesMinimumQ1MedianMeanQ3Maximum
Normal20020.0543.7550.0749.9856.8673.37
Additional quantiles for Normal: 25% = 43.7575% = 56.86
Right Skewed20030.7034.9639.4146.5450.48268.69
Additional quantiles for Right Skewed: 25% = 34.9675% = 50.48
Bimodal20017.1535.3956.8151.1465.6681.04
Additional quantiles for Bimodal: 25% = 35.3975% = 65.66
Tight20040.6547.6549.6949.7251.8257.76
Additional quantiles for Tight: 25% = 47.6575% = 51.82
Usage Example
@violin.Violin(violin.Config{
  Label: "Distribution shapes from deterministic samples",
  Caption: "Four 200-sample distributions with exact adjacent statistics.",
  Title: "Distribution Shapes",
  Series: []violin.Series{
    {Name: "Normal", Samples: normalSamples, Marks: violin.MarkLines{Mean: true, Median: true}, Statistics: violin.Statistics{Quantiles: []float64{.25, .75}}},
    {Name: "Right Skewed", Samples: rightSkewedSamples, Marks: violin.MarkLines{Mean: true, Median: true}, Statistics: violin.Statistics{Quantiles: []float64{.25, .75}}},
    {Name: "Bimodal", Samples: bimodalSamples, Marks: violin.MarkLines{Mean: true, Median: true}, Statistics: violin.Statistics{Quantiles: []float64{.25, .75}}},
    {Name: "Tight", Samples: tightSamples, Marks: violin.MarkLines{Mean: true, Median: true}, Statistics: violin.Statistics{Quantiles: []float64{.25, .75}}},
  },
  Density: violin.Distribution{Points: 80},
  Padding: violin.Padding{Top: 5, Right: 5, Bottom: 50, Left: 5},
  Width: 1200, Height: 800,
})

Interpreting distributions

Width estimates density, not individual observations. Compare the summary statistics alongside the shape, especially when distributions overlap.

Go API

v0.0.1

The examples above cover behavior and composition. pkg.go.dev is the canonical reference for exported types, functions, methods, and Go documentation.

github.com/araihu/goshtoso-charts/components/violin

Enabled, disabled, hidden, and omitted wrapper behavior, controls, export, and client transitions are shared by every chart. Review chart controls, then compare static/vector and interactive capabilities.

Open v0.0.1 API