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
| Distribution | Samples | Minimum | Q1 | Median | Mean | Q3 | Maximum |
|---|---|---|---|---|---|---|---|
| Normal | 200 | 20.05 | 43.75 | 50.07 | 49.98 | 56.86 | 73.37 |
| Additional quantiles for Normal: 25% = 43.7575% = 56.86 | |||||||
| Right Skewed | 200 | 30.70 | 34.96 | 39.41 | 46.54 | 50.48 | 268.69 |
| Additional quantiles for Right Skewed: 25% = 34.9675% = 50.48 | |||||||
| Bimodal | 200 | 17.15 | 35.39 | 56.81 | 51.14 | 65.66 | 81.04 |
| Additional quantiles for Bimodal: 25% = 35.3975% = 65.66 | |||||||
| Tight | 200 | 40.65 | 47.65 | 49.69 | 49.72 | 51.82 | 57.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.1The 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/violinEnabled, 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.