---
title: "DistributionChart"
language: "en"
type: "Symbol"
summary: "DistributionChart[{data1, data2, ...}] makes a distribution chart with a distribution symbol for each datai. DistributionChart[{..., wi[datai, ...], ..., wj[dataj, ...], ...}] makes a distribution chart with symbol features defined by the symbolic wrappers wk. DistributionChart[{{data1, data2, ...}, ...}] makes a distribution chart from multiple groups of datasets {data1, data2, ...}."
keywords: 
- exploratory data analysis
- box chart
- box graph
- box plot
- quantile chart
- quantile bar
- range graph
- range plot
- range chart
- violin plot
- violin chart
- stripe chart
- BAR_PLOT
canonical_url: "https://reference.wolfram.com/language/ref/DistributionChart.html"
source: "Wolfram Language Documentation"
related_guides: 
  - 
    title: "Statistical Visualization"
    link: "https://reference.wolfram.com/language/guide/StatisticalVisualization.en.md"
  - 
    title: "Random Variables"
    link: "https://reference.wolfram.com/language/guide/RandomVariables.en.md"
  - 
    title: "Tabular Visualization"
    link: "https://reference.wolfram.com/language/guide/TabularVisualization.en.md"
related_functions: 
  - 
    title: "BoxWhiskerChart"
    link: "https://reference.wolfram.com/language/ref/BoxWhiskerChart.en.md"
  - 
    title: "Histogram"
    link: "https://reference.wolfram.com/language/ref/Histogram.en.md"
  - 
    title: "QuantilePlot"
    link: "https://reference.wolfram.com/language/ref/QuantilePlot.en.md"
  - 
    title: "BarChart"
    link: "https://reference.wolfram.com/language/ref/BarChart.en.md"
  - 
    title: "ListLinePlot"
    link: "https://reference.wolfram.com/language/ref/ListLinePlot.en.md"
  - 
    title: "Quantile"
    link: "https://reference.wolfram.com/language/ref/Quantile.en.md"
---
# DistributionChart

DistributionChart[{data1, data2, …}] makes a distribution chart with a distribution symbol for each datai.

DistributionChart[{…, wi[datai, …], …, wj[dataj, …], …}] makes a distribution chart with symbol features defined by the symbolic wrappers wk.

DistributionChart[{{data1, data2, …}, …}] makes a distribution chart from multiple groups of datasets {data1, data2, …}.

## Details and Options

* ``DistributionChart`` draws a representation of the distribution of values in each ``datai``.

* Data elements for ``DistributionChart`` can be given in the following forms:

|                       |                            |
| --------------------- | -------------------------- |
| datai                 | a pure dataset             |
| Quantity[datai, unit] | data datai with units      |
| wi[datai, …]          | data veci with wrapper wi  |
| formi -> mi           | data with metadata mi      |

* Each ``datai`` should be a list of real numbers ``{y1, y2, …}``. Elements ``yj`` that are not real numbers are taken to be missing and are excluded. If ``datai`` is not a list of real numbers, it is taken to be missing data and will typically result in a gap in the distribution chart.

* Datasets for ``DistributionChart`` can be given in the following forms:

|                                                |                                              |
| ---------------------------------------------- | -------------------------------------------- |
| {data1, data2, …}                              | list of elements with or without wrappers    |
| <\|k1 -> data1, k2 -> data2, …\|>                | association of keys and datasets             |
| TimeSeries[…], EventSeries[…], TemporalData[…] | time series, event series, and temporal data |
| WeightedData[…], EventData[…]                  | augmented datasets                           |
| w[{data1, data2, …}, …]                        | wrapper applied to a grouped dataset         |
| w[{{data1, data1, …}, …}, …]                   | wrapper applied to all grouped datasets      |

* ``DistributionChart[Tabular[…] -> cspec]`` extracts and plots values from the tabular object using the column specification ``cspec``.

* The following forms of column specifications ``cspec`` are allowed for plotting tabular data:

|                   |                                                         |
| ----------------- | ------------------------------------------------------- |
| colx              | plot a distribution chart for the values in column colx |
| {colx1, colx2, …} | plot distribution charts for columns colx1, colx2, …    |

* The following wrappers can be used for the ``datai`` :

|                      |                                                            |
| -------------------- | ---------------------------------------------------------- |
| Annotation[e, label] | provide an annotation                                      |
| Button[e, action]    | define an action to execute when the element is clicked    |
| Callout[e, label]    | display the element with a callout                         |
| EventHandler[e, …]   | define a general event handler for the element             |
| Hyperlink[e, uri]    | make the element act as a hyperlink                        |
| Labeled[e, …]        | display the element with labeling                          |
| Legended[e, …]       | include features of the element in a chart legend          |
| Mouseover[e, over]   | make the element show a mouseover form                     |
| PopupWindow[e, cont] | attach a popup window to the element                       |
| StatusArea[e, label] | display in the status area when the element is moused over |
| Style[e, opts]       | show the element using the specified styles                |
| Tooltip[e, label]    | attach an arbitrary tooltip to the element                 |

* ``DistributionChart`` has the same options as ``Graphics``, with the following additions and changes:  []

|                       |                     |                                           |
| --------------------- | ------------------- | ----------------------------------------- |
| AspectRatio           | 1 / GoldenRatio     | overall ratio of height to width          |
| BarOrigin             | Bottom              | origin placement for shapes               |
| BarSpacing            | Automatic           | fractional spacing between shapes         |
| ChartBaseStyle        | Automatic           | overall style for shapes                  |
| ChartElementFunction  | Automatic           | how to generate raw graphics for shapes   |
| ChartLabels           | None                | labels for data elements and datasets     |
| ChartLayout           | Automatic           | overall layout to use                     |
| ChartLegends          | None                | legends for data elements and datasets    |
| ChartStyle            | Automatic           | style for shapes                          |
| Frame                 | True                | whether to draw a frame around the chart  |
| LabelingFunction      | Automatic           | how to label shapes                       |
| LabelingSize          | Automatic           | maximum size of callouts and labels       |
| LegendAppearance      | Automatic           | overall appearance of legends             |
| Method                | Automatic           | what methods to use                       |
| PerformanceGoal       | \$PerformanceGoal   | aspects of performance to try to optimize |
| PlotInteractivity     | \$PlotInteractivity | whether to allow interactive elements     |
| PlotTheme             | \$PlotTheme         | overall theme for the chart               |
| ScalingFunctions      | None                | how to scale individual coordinates       |
| TargetUnits           | Automatic           | units to display in the chart             |

* The following settings for ``ChartLayout`` can be used to display multiple sets of data:

|         |              |                                    |
| ------- | ------------ | ---------------------------------- |
| [image] | "Stacked"    | separate the data for each dataset |
| [image] | "Overlapped" | overlap the data for each dataset  |

* The arguments supplied to ``ChartElementFunction`` are the box region ``{{xmin, xmax}, {ymin, ymax}}``, the data vector ``veci``, and metadata ``{m1, m2, …}`` from each level in a nested list of datasets.

* A list of built-in settings for ``ChartElementFunction`` can be obtained from ``ChartElementData["DistributionChart"]``.

* With ``ScalingFunctions -> s``, the data coordinate is scaled using ``s``.

* Style and other specifications from options and other constructs in ``DistributionChart`` are effectively applied in the order ``ChartStyle``, ``Style`` and other wrappers, and ``ChartElementFunction``, with later specifications overriding earlier ones.

### List of all options

|                        |                     |                                                                                    |
| ---------------------- | ------------------- | ---------------------------------------------------------------------------------- |
| AlignmentPoint         | Center              | the default point in the graphic to align with                                     |
| AspectRatio            | 1 / GoldenRatio     | overall ratio of height to width                                                   |
| Axes                   | False               | whether to draw axes                                                               |
| AxesLabel              | None                | axes labels                                                                        |
| AxesOrigin             | Automatic           | where axes should cross                                                            |
| AxesStyle              | {}                  | style specifications for the axes                                                  |
| Background             | None                | background color for the plot                                                      |
| BarOrigin              | Bottom              | origin placement for shapes                                                        |
| BarSpacing             | Automatic           | fractional spacing between shapes                                                  |
| BaselinePosition       | Automatic           | how to align with a surrounding text baseline                                      |
| BaseStyle              | {}                  | base style specifications for the graphic                                          |
| ChartBaseStyle         | Automatic           | overall style for shapes                                                           |
| ChartElementFunction   | Automatic           | how to generate raw graphics for shapes                                            |
| ChartLabels            | None                | labels for data elements and datasets                                              |
| ChartLayout            | Automatic           | overall layout to use                                                              |
| ChartLegends           | None                | legends for data elements and datasets                                             |
| ChartStyle             | Automatic           | style for shapes                                                                   |
| ContentSelectable      | Automatic           | whether to allow contents to be selected                                           |
| CoordinatesToolOptions | Automatic           | detailed behavior of the coordinates tool                                          |
| Epilog                 | {}                  | primitives rendered after the main plot                                            |
| FormatType             | TraditionalForm     | the default format type for text                                                   |
| Frame                  | True                | whether to draw a frame around the chart                                           |
| FrameLabel             | None                | frame labels                                                                       |
| FrameStyle             | {}                  | style specifications for the frame                                                 |
| FrameTicks             | Automatic           | frame ticks                                                                        |
| FrameTicksStyle        | {}                  | style specifications for frame ticks                                               |
| GridLines              | None                | grid lines to draw                                                                 |
| GridLinesStyle         | {}                  | style specifications for grid lines                                                |
| ImageMargins           | 0.                  | the margins to leave around the graphic                                            |
| ImagePadding           | All                 | what extra padding to allow for labels etc.                                        |
| ImageSize              | Automatic           | the absolute size at which to render the graphic                                   |
| LabelingFunction       | Automatic           | how to label shapes                                                                |
| LabelingSize           | Automatic           | maximum size of callouts and labels                                                |
| LabelStyle             | {}                  | style specifications for labels                                                    |
| LegendAppearance       | Automatic           | overall appearance of legends                                                      |
| Method                 | Automatic           | what methods to use                                                                |
| PerformanceGoal        | \$PerformanceGoal   | aspects of performance to try to optimize                                          |
| PlotInteractivity      | \$PlotInteractivity | whether to allow interactive elements                                              |
| PlotLabel              | None                | an overall label for the plot                                                      |
| PlotRange              | All                 | range of values to include                                                         |
| PlotRangeClipping      | False               | whether to clip at the plot range                                                  |
| PlotRangePadding       | Automatic           | how much to pad the range of values                                                |
| PlotRegion             | Automatic           | the final display region to be filled                                              |
| PlotTheme              | \$PlotTheme         | overall theme for the chart                                                        |
| PreserveImageOptions   | Automatic           | whether to preserve image options when displaying new versions of the same graphic |
| Prolog                 | {}                  | primitives rendered before the main plot                                           |
| RotateLabel            | True                | whether to rotate y labels on the frame                                            |
| ScalingFunctions       | None                | how to scale individual coordinates                                                |
| TargetUnits            | Automatic           | units to display in the chart                                                      |
| Ticks                  | Automatic           | axes ticks                                                                         |
| TicksStyle             | {}                  | style specifications for axes ticks                                                |

---

## Examples (93)

### Basic Examples (4)

Generate a distribution chart of a list of datasets:

```wl
In[1]:= DistributionChart[RandomReal[BetaDistribution[2, 1 / 4], {6, 100}]]

Out[1]= [image]
```

---

Multiple list of datasets:

```wl
In[1]:= data = Table[RandomVariate[BetaDistribution[2, RandomReal[]], 100], {4}, {2}];

In[2]:= DistributionChart[data]

Out[2]= [image]
```

---

Use categorical labels:

```wl
In[1]:= data = Table[RandomVariate[NormalDistribution[RandomInteger[5], 1], 100], {2}, {3}];

In[2]:= DistributionChart[data, ChartLabels -> {"a", "b", "c"}]

Out[2]= [image]
```

Categorical legends:

```wl
In[3]:= DistributionChart[data, ChartLegends -> {"a", "b", "c"}]

Out[3]= [image]
```

---

Style the shapes:

```wl
In[1]:= data = Table[RandomVariate[NormalDistribution[RandomInteger[5], 1], 100], {10}];

In[2]:= DistributionChart[data, ChartStyle -> "SandyTerrain"]

Out[2]= [image]
```

Use procedural shapes:

```wl
In[3]:= DistributionChart[data, ChartStyle -> "SouthwestColors", ChartElementFunction -> "GlassQuantile"]

Out[3]= [image]
```

Histogram bars:

```wl
In[4]:= DistributionChart[data, ChartStyle -> "SouthwestColors", ChartElementFunction -> "HistogramDensity"]

Out[4]= [image]
```

### Scope (35)

#### Data and Layouts (17)

Single data vector:

```wl
In[1]:= DistributionChart[RandomReal[NormalDistribution[], {1, 100}]]

Out[1]= [image]
```

---

Multiple data vectors:

```wl
In[1]:= DistributionChart[RandomReal[NormalDistribution[], {3, 100}]]

Out[1]= [image]
```

---

Data vectors in a dataset are grouped together:

```wl
In[1]:= data = RandomVariate[NormalDistribution[0, 1], 100];

In[2]:= DistributionChart[{{data, data + 1, data + 2}, {data, data + 1, data + 2}}]

Out[2]= [image]
```

---

Datasets do not need to have the same number of data vectors:

```wl
In[1]:= data = RandomVariate[NormalDistribution[0, 1], 100];

In[2]:= DistributionChart[{{data, data + 1}, {data, data + 1, data + 2, data + 3}}]

Out[2]= [image]
```

---

Nonreal data is taken to be missing and typically yields a gap in the box-and-whisker chart:

```wl
In[1]:= data = RandomVariate[NormalDistribution[0, 1], 100];

In[2]:= DistributionChart[{data, Missing[], data, foo, data}, BarSpacing -> 3]

Out[2]= [image]
```

---

Nonreal entries in data vectors are omitted:

```wl
In[1]:= DistributionChart[{I, 1, 2, Missing[], 3, 4, foo, 5}, BarSpacing -> 3]

Out[1]= [image]
```

---

The data may include units:

```wl
In[1]:= DistributionChart[{Quantity[33, "Meters"], Quantity[35, "Meters"], Quantity[12, "Meters"], Quantity[8, "Meters"], Quantity[50, "Meters"], Quantity[15, "Meters"], Quantity[24, "Meters"], Quantity[44, "Meters"], Quantity[4, "Meters"], Quantity[37, "Meters"]}, FrameLabel -> Automatic]

Out[1]= [image]
```

---

Specify the units to use:

```wl
In[1]:= DistributionChart[{Quantity[33, "Meters"], Quantity[35, "Meters"], Quantity[12, "Meters"], Quantity[8, "Meters"], Quantity[50, "Meters"], Quantity[15, "Meters"], Quantity[24, "Meters"], Quantity[44, "Meters"], Quantity[4, "Meters"], Quantity[37, "Meters"]}, FrameLabel -> Automatic, TargetUnits -> "Feet"]

Out[1]= [image]
```

---

The time stamps in ``TimeSeries``, ``EventSeries``, and ``TemporalData`` are ignored:

```wl
In[1]:= d = RandomVariate[NormalDistribution[], 100];

In[2]:= DistributionChart[TimeSeries[d, {"May 24, 1982"}]]

Out[2]= [image]
```

---

The values in associations are taken as the heights of the bars:

```wl
In[1]:=
d1 = RandomVariate[NormalDistribution[0, 1], 100];
d2 = RandomVariate[NormalDistribution[2, 0.5], 100];

In[2]:= DistributionChart[<|"a" -> d1, "b" -> d2, "c" -> d1 + d2|>]

Out[2]= [image]
```

Use the keys as labels:

```wl
In[3]:= DistributionChart[<|"a" -> d1, "b" -> d2, "c" -> d1 + d2|>, ChartLabels -> Automatic]

Out[3]= [image]
```

Use the keys as legends:

```wl
In[4]:= DistributionChart[<|"a" -> d1, "b" -> d2, "c" -> d1 + d2|>, ChartLegends -> Automatic, ChartStyle -> 82]

Out[4]= [image]
```

---

Associations can be nested:

```wl
In[1]:=
a1 = RandomVariate[NormalDistribution[0, 2], 100];
a2 = RandomVariate[NormalDistribution[2, 1 / 2], 100];
b1 = RandomVariate[ChiDistribution[1], 100];
b2 = RandomVariate[ChiDistribution[3], 100];

In[2]:= DistributionChart[<|"group a" -> <|"a" -> a1, "b" -> a2, "c" -> a1 + a2|>, "group b" -> <|"a" -> b1, "b" -> b2, "c" -> b1 + b2|>|>, ChartLegends -> Automatic, ChartLabels -> {Automatic, None}]

Out[2]= [image]
```

---

Use ``WeightedData`` to add weights to data:

```wl
In[1]:= data = RandomReal[{-1, 1}, 100];

In[2]:= wd = WeightedData[data, data ^ 2]

Out[2]= WeightedData[Automatic, CompressedData["«2259»"]]

In[3]:= DistributionChart[{data, wd}]

Out[3]= [image]
```

Use ``EventData`` to add censoring and truncation information:

```wl
In[4]:= event = EventData[data, Round[data]]

Out[4]=
EventData[Automatic, {CompressedData["«1168»"], 
  CompressedData["«130»"], None}]

In[5]:= DistributionChart[{data, event}]

Out[5]= [image]
```

---

Use wrappers on individual data vectors, datasets, or collections of datasets:

```wl
In[1]:= d = RandomVariate[NormalDistribution[0, 1], 100];

In[2]:=
{DistributionChart[{{d, Style[d + 1, Red], d + 2}, {d, d + 1, d + 2}}], 
	DistributionChart[{Style[{d, d + 1, d + 2}, Green], {d, d + 1, d + 2}}], 
	DistributionChart[Style[{{d, d + 1, d + 2}, {d, d + 1, d + 2}}, Blue]]}

Out[2]= {[image], [image], [image]}
```

---

Inner wrappers take precedence over outer wrappers:

```wl
In[1]:= d = RandomVariate[NormalDistribution[0, 1], 100];

In[2]:=
{DistributionChart[{{d, Style[d + 1, Red], d + 2}, {d, d + 1, d + 2}}], 
	DistributionChart[{Style[{d, Style[d + 1, Red], d + 2}, Green], {d, d + 1, d + 2}}], 
	DistributionChart[Style[{Style[{d, Style[d + 1, Red], d + 2}, Green], {d, d + 1, d + 2}}, Blue]]}

Out[2]= {[image], [image], [image]}
```

---

Override the default tooltips:

```wl
In[1]:= d = RandomVariate[NormalDistribution[0, 1], 100];

In[2]:= DistributionChart[{d, Tooltip[d + 1, "μ = 1"], d + 2}]

Out[2]= [image]
```

---

Use ``PopupWindow`` to provide additional drilldown information:

```wl
In[1]:= d = RandomVariate[NormalDistribution[0, 1], 100];

In[2]:= DistributionChart[{d, PopupWindow[d + 1, BoxWhiskerChart[d + 1]], d + 2}]

Out[2]= [image]
```

Use the other charting functions in a ``PopupWindow`` to provide more information:

```wl
In[3]:= DistributionChart[Table[PopupWindow[FinancialData[f, {{2010, 1}, {2010, 6}}], TradingChart[{f, {{2010, 1}, {2010, 6}}}, PlotLabel -> f]], {f, {"MSFT", "ORCL", "ADBE"}}]]

Out[3]= [image]
```

---

``Button`` can be used to trigger any action:

```wl
In[1]:= d = RandomVariate[NormalDistribution[0, 1], 100];

In[2]:= DistributionChart[{d, Button[d + 1, Speak["Mean is 1."]], d + 2}]

Out[2]= [image]
```

#### Tabular Data (1)

Get tabular data:

```wl
In[1]:= penguins = ResourceData["Sample Tabular Data: Palmer Penguins"]

Out[1]=
Tabular[Association["RawSchema" -> Association["ColumnProperties" -> 
     Association["index" -> Association["ElementType" -> "Integer64"], 
      "species" -> Association["ElementType" -> TypeSpecifier["Categorical"][
          TabularColumn[Asso ... 2007200720072007200820082008200820082008200820082008200820082008200820082008200820082008200920\
092009200920092009200920092009200920092009200920092009200920092009200920092009200920092009"}, {}, 
            None}, "ElementType" -> "String"]]}}]]]]
```

Generate a distribution chart for flipper lengths:

```wl
In[2]:= DistributionChart[penguins -> "flipper_length"]

Out[2]= [image]
```

Create a table with flipper lengths divided into columns by species:.

```wl
In[3]:= pivot = PivotToColumns[penguins, "species" -> "flipper_length"]

Out[3]=
Tabular[Association["RawSchema" -> Association["ColumnProperties" -> 
     Association["index" -> Association["ElementType" -> "Integer64"], 
      "island" -> Association["ElementType" -> TypeSpecifier["Categorical"][
          TabularColumn[Assoc ... , {"Data" -> ByteArray[
                "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/v//////////"], "Capacity" -> 333, 
              "BitCount" -> 68}]}, "ElementType" -> TypeSpecifier["Quantity"]["Integer64", 
            "Millimeters"]]]}}]]]]
```

Compare flipper lengths by species:

```wl
In[4]:= DistributionChart[pivot -> {ExtendedKey["flipper_length", "Adelie"], ExtendedKey["flipper_length", "Chinstrap"], ExtendedKey["flipper_length", "Gentoo"]}, ChartLabels -> {"Adelie", "Chinstrap", "Gentoo"}]

Out[4]= [image]
```

Use abbreviated names for extended keys when the elements are unique:

```wl
In[5]:= DistributionChart[pivot -> {"Adelie", "Chinstrap", "Gentoo"}, ChartLabels -> {"Adelie", "Chinstrap", "Gentoo"}]

Out[5]= [image]
```

#### Styling and Appearance (9)

Use an explicit list of styles for the shapes:

```wl
In[1]:= data = Table[RandomVariate[NormalDistribution[μ, 1], 100], {μ, 0, 4, 1}];

In[2]:= DistributionChart[data, ChartStyle -> {Blue, Red, Green, Yellow, Brown}]

Out[2]= [image]
```

---

Use any gradient or indexed color schemes from ``ColorData`` :

```wl
In[1]:= data = Table[RandomVariate[NormalDistribution[μ, 1], 100], {μ, 0, 4, 1}];

In[2]:= Table[DistributionChart[data, ChartStyle -> s], {s, {"Pastel", 12}}]

Out[2]= {[image], [image]}
```

---

Use color schemes designed for charting:

```wl
In[1]:= ColorData["Charting"]

Out[1]= {44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113}

In[2]:= data = Table[RandomVariate[NormalDistribution[μ, 1], 100], {μ, 0, 5, 1}];

In[3]:= Table[DistributionChart[data, ChartStyle -> s, Frame -> False, BarSpacing -> 0], {s, Take[ColorData["Charting"], 9]}]

Out[3]= {[image], [image], [image], [image], [image], [image], [image], [image], [image]}
```

---

``ChartBaseStyle`` can be used to set an initial style for all chart elements:

```wl
In[1]:= data = Table[RandomVariate[NormalDistribution[μ, 1], 100], {μ, 0, 5, 1}];

In[2]:= DistributionChart[data, ChartBaseStyle -> EdgeForm[Dashed], ChartStyle -> 45]

Out[2]= [image]
```

---

``Style`` can be used to override styles:

```wl
In[1]:= d[μ_] := RandomVariate[NormalDistribution[μ, 1], 100];

In[2]:= DistributionChart[{d[1], d[2], Style[d[3], Red], d[4], d[5]}, ChartStyle -> 45]

Out[2]= [image]
```

---

Use built-in programmatically generated shapes:

```wl
In[1]:= ChartElementData["DistributionChart"]

Out[1]= {"Density", "DensityQuantile", "FadingQuantile", "GlassQuantile", "HistogramDensity", "LineDensity", "PointDensity", "Quantile", "SmoothDensity"}

In[2]:= data = Table[RandomVariate[NormalDistribution[μ, 1], 100], {μ, 0, 5, 1}];

In[3]:= Table[DistributionChart[data, ChartStyle -> 14, ChartElementFunction -> cf], {cf, {"Density", "HistogramDensity"}}]

Out[3]= {[image], [image]}
```

For detailed settings, use Palettes ▶ ChartElementSchemes :

```wl
In[4]:= DistributionChart[data, ChartStyle -> 14, ChartElementFunction -> ChartElementData["GlassQuantile", "Quantile" -> 9, "QuantileShading" -> True]]

Out[4]= [image]
```

---

Change the origin of shapes:

```wl
In[1]:= data = Table[RandomVariate[BetaDistribution[μ, 1 / 4], 100], {μ, 1, 4, 1}];

In[2]:= Table[DistributionChart[data, PlotLabel -> o, BarOrigin -> o], {o, {Bottom, Top, Left, Right}}]

Out[2]= {[image], [image], [image], [image]}
```

---

Adjust the spacing between individuals and groups of shapes:

```wl
In[1]:= data = Table[RandomVariate[NormalDistribution[μ, 1], 100], {μ, {0, 1, 2}}];

In[2]:= Table[DistributionChart[{data, data}, BarSpacing -> sp, PlotLabel -> sp, ChartStyle -> Opacity[0.8]], {sp, {Automatic, {0, 1}, {-0.3, 1}}}]

Out[2]= {[image], [image], [image]}
```

---

Use a theme with dark background and high-contrast styles:

```wl
In[1]:= data = RandomVariate[NormalDistribution[RandomInteger[5], 1], {3, 3, 100}];

In[2]:= DistributionChart[data, PlotTheme -> "Marketing"]

Out[2]= [image]
```

Use a theme with bright colors and grid lines:

```wl
In[3]:= DistributionChart[data, PlotTheme -> "Business"]

Out[3]= [image]
```

#### Labeling and Legending (8)

Use ``Labeled`` to add a label to a shape:

```wl
In[1]:= d[μ_] := RandomVariate[NormalDistribution[μ, 1], 100];

In[2]:= DistributionChart[{d[1], Labeled[d[2], "label"], d[3]}]

Out[2]= [image]
```

---

Use symbolic positions for label placement:

```wl
In[1]:= d[μ_] := RandomVariate[BetaDistribution[μ, 0.5], 100];

In[2]:= Table[DistributionChart[{Labeled[d[1], "label", p], d[2], d[3]}, PlotLabel -> p, Frame -> False], {p, {Bottom, Center, Top}}]

Out[2]= {[image], [image], [image]}

In[3]:= Table[DistributionChart[{Labeled[d[1], "label", p], d[2], d[3]}, PlotLabel -> p, Frame -> False], {p, {Before, After, Above, Below}}]

Out[3]= {[image], [image], [image], [image]}
```

---

Provide categorical labels for the columns of data:

```wl
In[1]:= data = Table[RandomVariate[NormalDistribution[μ, 1], 100], {μ, {0, 2}}, {3}];

In[2]:= DistributionChart[data, ChartLabels -> {"c1", "c2", "c3"}]

Out[2]= [image]
```

For rows of data:

```wl
In[3]:= DistributionChart[data, ChartLabels -> {{"r1", "r2"}, None}]

Out[3]= [image]
```

For both:

```wl
In[4]:= DistributionChart[data, ChartLabels -> {{"r1", "r2"}, {"c1", "c2", "c3"}}]

Out[4]= [image]
```

---

Use ``Placed`` to control the positioning of labels, using the same positions as for ``Labeled`` :

```wl
In[1]:= data = Table[RandomVariate[NormalDistribution[μ, 1], 100], {μ, {0, 2}}, {3}];

In[2]:= DistributionChart[data, ChartLabels -> {Placed[{"r1", "r2"}, Above], Placed[{"c1", "c2", "c3"}, Center]}]

Out[2]= [image]
```

---

Provide value labels for shapes by using ``LabelingFunction`` :

```wl
In[1]:= data = Table[RandomVariate[NormalDistribution[μ, 1], 100], {μ, {0, 2}}, {3}];

In[2]:= DistributionChart[data, LabelingFunction -> (Placed[Mean[#], Tooltip]&)]

Out[2]= [image]
```

Use ``Placed`` to control placement and formatting:

```wl
In[3]:= labeler[v_, {i_, j_}, {ri_, cj_}] := Placed[Row[{ri[[1]], cj[[1]]}, ","], Center, Rotate[#, Pi / 4]&]

In[4]:= DistributionChart[data, ChartLabels -> {{"r1", "r2"}, {"c1", "c2", "c3"}}, LabelingFunction -> labeler]

Out[4]= [image]
```

---

Add categorical legend entries for the columns of data:

```wl
In[1]:= data = Table[RandomVariate[NormalDistribution[μ, 1], 100], {μ, {0, 2}}, {3}];

In[2]:= DistributionChart[data, ChartLegends -> {"ccc1", "ccc2", "ccc3"}, ChartStyle -> "Pastel"]

Out[2]= [image]
```

For a row of data:

```wl
In[3]:= DistributionChart[data, ChartLegends -> {{"rr1", "rr2"}, None}, ChartStyle -> {"Pastel", None}]

Out[3]= [image]
```

---

Use ``Legended`` to add additional legend entries:

```wl
In[1]:= d[μ_] := RandomVariate[NormalDistribution[μ, 1], 100];

In[2]:= DistributionChart[{d[1], Legended[d[2], "extra"], d[3]}, ChartLegends -> {"ccc1", "ccc2", "ccc3"}, ChartStyle -> "Pastel"]

Out[2]= [image]

In[3]:= DistributionChart[Legended[{d[1], d[2], d[3]}, "extra"], ChartLegends -> {"ccc1", "ccc2", "ccc3"}, ChartStyle -> "Pastel"]

Out[3]= [image]
```

---

Use ``Placed`` to affect the positioning of legends:

```wl
In[1]:= data = Table[RandomVariate[NormalDistribution[μ, 1], 100], {μ, {0, 2}}, {3}];

In[2]:= Table[DistributionChart[data, ChartLegends -> Placed[{"ccc1", "ccc2", "ccc3"}, p], ChartStyle -> "Pastel"], {p, {Below, Above}}]

Out[2]= [image]
```

### Options (46)

#### AspectRatio (3)

By default, ``DistributionChart`` uses a fixed height to width ratio for the plot:

```wl
In[1]:= DistributionChart[IconizedObject[«data»]]

Out[1]= [image]
```

---

Make the height the same as the width with ``AspectRatio -> 1`` :

```wl
In[1]:= DistributionChart[IconizedObject[«data»], AspectRatio -> 1]

Out[1]= [image]
```

---

``AspectRatio -> Full`` adjusts the height and width to tightly fit inside other constructs:

```wl
In[1]:=
plot = DistributionChart[IconizedObject[«data»], AspectRatio -> Full];
{Framed[Pane[plot, {100, 150}]], Framed[Pane[plot, {100, 100}]], Framed[Pane[plot, {150, 100}]]}

Out[1]= {[image], [image], [image]}
```

#### BarOrigin (1)

Change bar origin:

```wl
In[1]:= data = RandomVariate[NormalDistribution[2, 1], {6, 100}];

In[2]:= DistributionChart[data]

Out[2]= [image]

In[3]:= Table[DistributionChart[data, BarOrigin -> o, PlotLabel -> o], {o, {Bottom, Top, Left, Right}}]

Out[3]= {[image], [image], [image], [image]}
```

#### BarSpacing (4)

``DistributionChart`` automatically selects the spacing between bars:

```wl
In[1]:= Table[DistributionChart[RandomVariate[NormalDistribution[], {n, 100}]], {n, {1, 2, 4, 8}}]

Out[1]= {[image], [image], [image], [image]}
```

With groups of data:

```wl
In[2]:= Table[DistributionChart[RandomVariate[NormalDistribution[], {n, 2, 100}]], {n, {2, 4}}]

Out[2]= {[image], [image]}
```

---

Use symbolic spacing:

```wl
In[1]:= Table[DistributionChart[RandomVariate[NormalDistribution[], {10, 100}], BarSpacing -> s, PlotLabel -> s], {s, {Tiny, Small, Medium, Large}}]

Out[1]= {[image], [image], [image], [image]}
```

With groups of data:

```wl
In[2]:= Table[DistributionChart[RandomVariate[NormalDistribution[], {3, 2, 100}], BarSpacing -> s, PlotLabel -> s], {s, {Tiny, Small, Medium, Large}}]

Out[2]= {[image], [image], [image], [image]}
```

---

Use explicit spacing between bars:

```wl
In[1]:= Table[DistributionChart[RandomVariate[NormalDistribution[], {10, 100}], BarSpacing -> s, PlotLabel -> s], {s, {0.25, 0.5, 1, 2}}]

Out[1]= {[image], [image], [image], [image]}
```

With groups of data:

```wl
In[2]:= Table[DistributionChart[RandomVariate[NormalDistribution[], {4, 2, 100}], BarSpacing -> s, PlotLabel -> s], {s, {{0.25, 0.5}, {0, 1}}}]

Out[2]= {[image], [image]}
```

---

Use no bar spacing:

```wl
In[1]:= DistributionChart[RandomVariate[NormalDistribution[], {10, 100}], BarSpacing -> None]

Out[1]= [image]
```

Within groups of data:

```wl
In[2]:= DistributionChart[RandomVariate[NormalDistribution[], {3, 2, 100}], BarSpacing -> {None, 1}]

Out[2]= [image]
```

#### ChartBaseStyle (3)

Use ``ChartBaseStyle`` to style box-and-whisker plots:

```wl
In[1]:= Table[DistributionChart[RandomVariate[NormalDistribution[], {5, 100}], ChartBaseStyle -> s], {s, {Orange, EdgeForm[], EdgeForm[Thickness[0.01]], Directive[Green, EdgeForm[Thick]]}}]

Out[1]= {[image], [image], [image], [image]}
```

---

``ChartBaseStyle`` combines with ``ChartStyle`` :

```wl
In[1]:= DistributionChart[RandomVariate[NormalDistribution[], {5, 100}], ChartStyle -> 24, ChartBaseStyle -> EdgeForm[Thick]]

Out[1]= [image]
```

---

``ChartStyle`` may override settings for ``ChartBaseStyle`` :

```wl
In[1]:= DistributionChart[RandomVariate[NormalDistribution[], {5, 100}], ChartStyle -> EdgeForm[None], ChartBaseStyle -> EdgeForm[Black]]

Out[1]= [image]
```

#### ChartElementFunction (5)

Get a list of built-in settings for ``ChartElementFunction`` :

```wl
In[1]:= ChartElementData["DistributionChart"]

Out[1]= {"Density", "DensityQuantile", "FadingQuantile", "GlassQuantile", "HistogramDensity", "LineDensity", "PointDensity", "Quantile", "SmoothDensity"}
```

---

For detailed settings, use Palettes ▶ ChartElementSchemes :

```wl
In[1]:= data = RandomReal[NormalDistribution[], {5, 100}];

In[2]:= Table[DistributionChart[data, ChartElementFunction -> f], {f, {"Quantile", "DensityQuantile", "FadingQuantile", "GlassQuantile"}}]

Out[2]= {[image], [image], [image], [image]}

In[3]:= Table[DistributionChart[data, ChartElementFunction -> f], {f, {"Density", "HistogramDensity", "LineDensity", "PointDensity"}}]

Out[3]= {[image], [image], [image], [image]}
```

---

Shade the default violin bars according to density:

```wl
In[1]:= DistributionChart[RandomVariate[NormalDistribution[0, 1], {8, 100}], ChartElementFunction -> ChartElementData["SmoothDensity", "ColorScheme" -> "DeepSeaColors"]]

Out[1]= [image]
```

---

Use bands to mark decile boundaries:

```wl
In[1]:= Table[DistributionChart[RandomVariate[NormalDistribution[], {5, 100}], ChartElementFunction -> ChartElementData[f, "QuantileShading" -> True, "Quantile" -> 10]], {f, {"Quantile", "DensityQuantile", "FadingQuantile", "GlassQuantile"}}]

Out[1]= {[image], [image], [image], [image]}
```

---

Write a custom ``ChartElementFunction`` :

```wl
In[1]:=
quantileBead[{{xmin_, xmax_}, {ymin_, ymax_}}, data_, metadata_] := Module[{min, max, lq, uq, median}, {min, lq, median, uq, max} = Quantile[data, {0, 0.1, 0.5, 0.9, 1}];
	{Line[{{(xmin + xmax) / 2, min}, {(xmin + xmax) / 2, max}}], 
	Polygon[{{xmin, median}, {(xmin + xmax) / 2, uq}, {xmax, median}, {(xmin + xmax) / 2, lq}}]}
	]

In[2]:= DistributionChart[RandomReal[NormalDistribution[0, 1], {3, 100}], ChartStyle -> 14, ChartElementFunction -> quantileBead]

Out[2]= [image]
```

#### ChartLabels (8)

By default, labels are placed under the frame:

```wl
In[1]:= DistributionChart[RandomReal[NormalDistribution[0, 1], {5, 100}], ChartLabels -> {"a", "b", "c", "d", "e"}]

Out[1]= [image]
```

---

Use ``Placed`` to control label placement:

```wl
In[1]:= Table[DistributionChart[RandomVariate[NormalDistribution[], {5, 100}], ChartLabels -> Placed[{"a", "b", "c", "d", "e"}, p], PlotLabel -> p], {p, {Bottom, Top, Left, Right}}]

Out[1]= {[image], [image], [image], [image]}
```

---

Symbolic positions outside the bar:

```wl
In[1]:= Table[DistributionChart[RandomVariate[NormalDistribution[], {5, 100}], ChartLabels -> Placed[{"a", "b", "c", "d", "e"}, p], PlotLabel -> p], {p, {Below, Above}}]

Out[1]= {[image], [image]}

In[2]:= Table[DistributionChart[RandomVariate[NormalDistribution[], {5, 100}], ChartLabels -> Placed[{"a", "b", "c", "d", "e"}, p], BarOrigin -> Left, PlotLabel -> p], {p, {Before, After}}]

Out[2]= {[image], [image]}
```

---

Use group labels to label groups:

```wl
In[1]:= DistributionChart[RandomVariate[NormalDistribution[], {4, 2, 100}], ChartLabels -> {{"g1", "g2", "g3", "g4"}, {"a", "b"}}]

Out[1]= [image]
```

---

Coordinate-based placement relative to a bar:

```wl
In[1]:= Table[DistributionChart[RandomVariate[NormalDistribution[], {4, 2, 100}], ChartLabels -> Placed[Range[3], p], PlotLabel -> p], {p, {{0, 0}, {0.5, 0.5}, {1, 1}}}]

Out[1]= {[image], [image], [image]}
```

---

Place all labels at the upper-right corner and vary the coordinates within the label:

```wl
In[1]:= Table[DistributionChart[RandomVariate[NormalDistribution[], {5, 100}], ChartLabels -> Placed[{"a", "b", "c", "d", "e"}, {{1, 1}, p}, Framed], PlotLabel -> p, Frame -> {{True, False}, {True, False}}], {p, {{0, 0}, {0.5, 0.5}, {1, 1}}}]

Out[1]= {[image], [image], [image]}
```

---

Use the third argument to ``Placed`` to control formatting:

```wl
In[1]:= DistributionChart[RandomVariate[NormalDistribution[], {5, 100}], ChartLabels -> Placed[{"a", "b", "c", "d", "e"}, Axis, Rotate[#, 45Degree]&]]

Out[1]= [image]

In[2]:= DistributionChart[RandomVariate[NormalDistribution[], {5, 100}], ChartLabels -> Placed[{"a", "b", "c", "d", "e"}, Axis, Panel]]

Out[2]= [image]

In[3]:= DistributionChart[RandomVariate[NormalDistribution[], {5, 100}], ChartLabels -> Placed[{"a", "b", "c", "d", "e"}, Axis, Style[Framed[#], 16, Blue]&]]

Out[3]= [image]
```

---

Place multiple labels:

```wl
In[1]:= DistributionChart[RandomVariate[NormalDistribution[], {5, 100}], Frame -> False, ChartLabels -> Placed[{{"a", "b", "c", "d", "e"}, {"v", "w", "x", "y", "z"}}, {Above, Below}]]

Out[1]= [image]
```

#### ChartLayout (2)

``ChartLayout`` is grouped by default:

```wl
In[1]:= data = RandomVariate[NormalDistribution[0, 1], {2, 3, 100}];

In[2]:= DistributionChart[data]

Out[2]= [image]
```

---

Use overlapped layout:

```wl
In[1]:= DistributionChart[RandomVariate[NormalDistribution[0, 1], {4, 2, 100}], ChartLayout -> "Overlapped", ChartBaseStyle -> Opacity[0.3]]

Out[1]= [image]
```

#### ChartLegends (1)

Generate a legend based on chart style:

```wl
In[1]:= DistributionChart[RandomVariate[NormalDistribution[], {5, 100}], ChartStyle -> "SandyTerrain", ChartLegends -> {"a", "b", "c", "d", "e"}]

Out[1]= [image]
```

Use ``Placed`` to change the legend location:

```wl
In[2]:= DistributionChart[RandomVariate[NormalDistribution[], {5, 100}], ChartStyle -> "SandyTerrain", ChartLegends -> Placed[{"a", "b", "c", "d", "e"}, Below]]

Out[2]= [image]
```

#### ChartStyle (4)

Use ``ChartStyle`` to style the bars:

```wl
In[1]:= Table[DistributionChart[RandomVariate[NormalDistribution[], {5, 100}], ChartStyle -> s], {s, {Orange, EdgeForm[Dashed], FaceForm[], Directive[EdgeForm[{Cyan, Thick}], Gray]}}]

Out[1]= {[image], [image], [image], [image]}
```

---

Give a list of styles:

```wl
In[1]:= DistributionChart[RandomVariate[NormalDistribution[], {5, 100}], ChartStyle -> {Red, Orange, Yellow, Green, Blue}]

Out[1]= [image]
```

Use the ``"Gradients"`` color scheme from ``ColorData`` :

```wl
In[2]:= DistributionChart[RandomVariate[NormalDistribution[], {5, 100}], ChartStyle -> "SolarColors"]

Out[2]= [image]
```

Use the ``"Indexed"`` color scheme from ``ColorData`` :

```wl
In[3]:= DistributionChart[RandomVariate[NormalDistribution[], {5, 100}], ChartStyle -> 24]

Out[3]= [image]
```

---

Styles are used cyclically:

```wl
In[1]:= DistributionChart[RandomVariate[NormalDistribution[], {5, 100}], ChartStyle -> {Red, Blue}]

Out[1]= [image]
```

---

Style datasets in a group:

```wl
In[1]:= DistributionChart[RandomVariate[NormalDistribution[], {4, 3, 100}], ChartStyle -> {Red, Orange, Yellow}]

Out[1]= [image]
```

Style groups of datasets:

```wl
In[2]:= DistributionChart[RandomVariate[NormalDistribution[], {4, 3, 100}], ChartStyle -> {{Red, Orange, Yellow, Brown}, None}]

Out[2]= [image]
```

#### LabelingFunction (2)

By default, bars have tooltips with a summary table of the data:

```wl
In[1]:= DistributionChart[RandomVariate[NormalDistribution[], {5, 100}]]

Out[1]= [image]
```

---

Define a labeling function and place it in the tooltip:

```wl
In[1]:= label[data_, index_, label_] := Grid[{{"Case:", index[[2]]}, {"Year:", label[[2, 1]]}, {"μ:", Mean[data]}}, Alignment -> {{Right, Left}}]

In[2]:= DistributionChart[RandomVariate[NormalDistribution[], {5, 100}], LabelingFunction -> (Placed[label[##], Tooltip]&), ChartLabels -> Placed[Range[2005, 2009], None]]

Out[2]= [image]
```

#### LabelingSize (4)

Textual labels are shown at their actual sizes:

```wl
In[1]:= DistributionChart[RandomVariate[NormalDistribution[], {5, 100}], ChartLabels -> {"healthfulness", "obstreperous", "spectrogram", "vestige", "coinage", "limey"}]

Out[1]= [image]
```

---

Image labels are automatically resized:

```wl
In[1]:= DistributionChart[RandomVariate[NormalDistribution[], {5, 100}], ChartLabels -> Placed[{[image], [image], [image], [image], [image]}, Axis]]

Out[1]= [image]
```

---

Specify a maximum size for textual labels:

```wl
In[1]:= DistributionChart[RandomVariate[NormalDistribution[], {5, 100}], ChartLabels -> {"healthfulness", "obstreperous", "spectrogram", "vestige", "coinage", "limey"}, LabelingSize -> 50]

Out[1]= [image]
```

Specify a maximum size for image labels:

```wl
In[2]:= DistributionChart[RandomVariate[NormalDistribution[], {5, 100}], ChartLabels -> {[image], [image], [image], [image], [image]}, LabelingSize -> 30]

Out[2]= [image]
```

---

Show image labels at their natural sizes:

```wl
In[1]:= DistributionChart[RandomVariate[NormalDistribution[], {5, 100}], ChartLabels -> {[image], [image], [image], [image], [image]}, LabelingSize -> Full, ImageSize -> Medium]

Out[1]= [image]
```

#### Method (1)

Use bar widths proportional to the square root of the data sizes:

```wl
In[1]:= data = Table[RandomReal[NormalDistribution[], i], {i, {100, 400, 900, 1600}}];

In[2]:= DistributionChart[data, Method -> {"BoxWidth" -> "Scaled"}, ChartLabels -> Length /@ data]

Out[2]= [image]
```

Put bars on fixed positions with varying bar spacing:

```wl
In[3]:= DistributionChart[data, Method -> {"BoxWidth" -> "Scaled"}, ChartLabels -> Length /@ data, "EqualSpacing" -> False]

Out[3]= [image]
```

Use constant width bars:

```wl
In[4]:= DistributionChart[data, Method -> {"BoxWidth" -> "Fixed"}]

Out[4]= [image]
```

#### PerformanceGoal (3)

Generate a distribution chart with interactive highlighting:

```wl
In[1]:= DistributionChart[RandomVariate[NormalDistribution[], {5, 100}], PerformanceGoal -> "Quality"]

Out[1]= [image]
```

---

Emphasize performance by disabling interactive behaviors:

```wl
In[1]:= DistributionChart[RandomVariate[NormalDistribution[], {5, 100}], PerformanceGoal -> "Speed"]

Out[1]= [image]
```

---

Typically, less memory is required for non-interactive charts:

```wl
In[1]:= Table[ByteCount@DistributionChart[RandomVariate[NormalDistribution[], {5, 100}], PerformanceGoal -> p], {p, {"Quality", "Speed"}}]

Out[1]= {93312, 75312}
```

#### PlotInteractivity (4)

Charts with a moderate number of bars automatically have tooltips and mouseover effects:

```wl
In[1]:= DistributionChart[{IconizedObject[«Subscript[data, 1]»], IconizedObject[«Subscript[data, 2]»], IconizedObject[«Subscript[data, 3]»], IconizedObject[«Subscript[data, 4]»]}]

Out[1]= [image]
```

---

Turn off all the interactive elements:

```wl
In[1]:= DistributionChart[{IconizedObject[«Subscript[data, 1]»], IconizedObject[«Subscript[data, 2]»], IconizedObject[«Subscript[data, 3]»], IconizedObject[«Subscript[data, 4]»]}, PlotInteractivity -> False]

Out[1]= [image]
```

---

Interactive elements provided as part of the input are disabled:

```wl
In[1]:= DistributionChart[{IconizedObject[«Subscript[data, 1]»], IconizedObject[«Subscript[data, 2]»], IconizedObject[«Subscript[data, 3]»], Tooltip[IconizedObject[«Subscript[data, 4]»], "hello"]}, PlotInteractivity -> False]

Out[1]= [image]
```

---

Allow provided interactive elements and disable automatic ones:

```wl
In[1]:= DistributionChart[{IconizedObject[«Subscript[data, 1]»], IconizedObject[«Subscript[data, 2]»], IconizedObject[«Subscript[data, 3]»], Tooltip[IconizedObject[«Subscript[data, 4]»], "hello"]}, PlotInteractivity -> <|"User" -> True, "System" -> False|>]

Out[1]= [image]
```

#### PlotTheme (1)

Use a theme with bright colors and grid lines:

```wl
In[1]:= data = RandomVariate[NormalDistribution[RandomInteger[5], 1], {3, 3, 100}];

In[2]:= DistributionChart[data, PlotTheme -> "Business"]

Out[2]= [image]
```

Add a theme with frame and vertical lines:

```wl
In[3]:= DistributionChart[data, PlotTheme -> {"Business", "FrameGrid"}]

Out[3]= [image]
```

Change the grid lines style:

```wl
In[4]:= DistributionChart[data, PlotTheme -> {"Business", "FrameGrid"}, GridLinesStyle -> LightRed]

Out[4]= [image]
```

### Applications (2)

Compare the distribution of salaries for several departments at a university:

```wl
In[1]:=
salaries = ExampleData[{"Statistics", "UniversitySalaries"}, "DataElements"];
depts = {"Mathematics", "History", "English", "Chemistry", "Law", "Physics", "Statistics"};
data = Table[Cases[salaries, {d, _, salary_, "A"} :> salary], {d, depts}];
all = Cases[salaries, {_, _, salary_, "A"} :> salary];

In[2]:= DistributionChart[data, ChartLabels -> Placed[{depts, Length /@ data}, {Axis, Center}], ChartStyle -> 54, GridLines -> {{{Median[all], Gray}}, None}, BarOrigin -> Left]

Out[2]= [image]
```

---

Compare different time slices for a random process:

```wl
In[1]:= data = Table[RandomVariate[WienerProcess[2, 3][t], 10 ^ 3], {t, {1, 4, 7, 10, 13}}];

In[2]:= DistributionChart[data, ChartLabels -> {1, 4, 7, 10, 13}]

Out[2]= [image]
```

### Properties & Relations (6)

Use ``BoxWhiskerChart`` to show the distribution of data:

```wl
In[1]:= data = Table[RandomVariate[NormalDistribution[μ, 1], 100], {μ, 0, 4, 1}];

In[2]:= BoxWhiskerChart[data, ChartStyle -> 14]

Out[2]= [image]
```

---

``BoxWhiskerChart`` is a special case of ``DistributionChart`` :

```wl
In[1]:= data = Table[RandomVariate[NormalDistribution[μ, 1], 100], {μ, 0, 4, 1}];

In[2]:= DistributionChart[data, ChartStyle -> 14, ChartElementFunction -> "BoxWhisker"]

Out[2]= [image]
```

---

Use ``Histogram`` and ``SmoothHistogram`` to visualize lists of data vectors:

```wl
In[1]:= data = Table[RandomVariate[NormalDistribution[μ, 1], 200], {μ, 0, 8, 4}];

In[2]:= {Histogram[data, Automatic, "PDF"], SmoothHistogram[data]}

Out[2]= {[image], [image]}
```

---

The default shapes used by ``DistributionChart`` are effectively generated using ``SmoothHistogram`` :

```wl
In[1]:= data = RandomVariate[NormalDistribution[], 25];

In[2]:= {DistributionChart[data, BarOrigin -> Left], SmoothHistogram[data]}

Out[2]= {[image], [image]}
```

---

Use ``QuantilePlot`` and ``ProbabilityPlot`` to compare data to distributions:

```wl
In[1]:= data = RandomVariate[NormalDistribution[0, 1], 200];

In[2]:= {QuantilePlot[data], ProbabilityPlot[data]}

Out[2]= {[image], [image]}
```

---

Use ``Histogram3D`` and ``SmoothHistogram3D`` to visualize 2D data:

```wl
In[1]:= data = RandomVariate[NormalDistribution[2, 1], {200, 2}];

In[2]:= {Histogram3D[data], SmoothHistogram3D[data]}

Out[2]= {[image], [image]}
```

## See Also

* [`BoxWhiskerChart`](https://reference.wolfram.com/language/ref/BoxWhiskerChart.en.md)
* [`Histogram`](https://reference.wolfram.com/language/ref/Histogram.en.md)
* [`QuantilePlot`](https://reference.wolfram.com/language/ref/QuantilePlot.en.md)
* [`BarChart`](https://reference.wolfram.com/language/ref/BarChart.en.md)
* [`ListLinePlot`](https://reference.wolfram.com/language/ref/ListLinePlot.en.md)
* [`Quantile`](https://reference.wolfram.com/language/ref/Quantile.en.md)

## Related Guides

* [Statistical Visualization](https://reference.wolfram.com/language/guide/StatisticalVisualization.en.md)
* [Random Variables](https://reference.wolfram.com/language/guide/RandomVariables.en.md)
* [Tabular Visualization](https://reference.wolfram.com/language/guide/TabularVisualization.en.md)

## History

* [Introduced in 2010 (8.0)](https://reference.wolfram.com/language/guide/SummaryOfNewFeaturesIn80.en.md) \| [Updated in 2012 (9.0)](https://reference.wolfram.com/language/guide/SummaryOfNewFeaturesIn90.en.md) ▪ [2014 (10.0)](https://reference.wolfram.com/language/guide/SummaryOfNewFeaturesIn100.en.md) ▪ [2018 (11.3)](https://reference.wolfram.com/language/guide/SummaryOfNewFeaturesIn113.en.md) ▪ [2025 (14.2)](https://reference.wolfram.com/language/guide/SummaryOfNewFeaturesIn142.en.md) ▪ [2025 (14.3)](https://reference.wolfram.com/language/guide/SummaryOfNewFeaturesIn143.en.md)