Skip to main content

hviolin

lq.hviolin(..data, y: auto, width: 50%, bandwidth: auto, fill: 30%, stroke: auto, color: auto, median: "o", mean: none, extrema: false, side: "both", boxplot: (:), whisker-pos: 1.5, num-points: 80, trim: true, label: none, clip: true, z-index: 2)(source)

Generates a violin plot for each given dataset. This is the horizontal version of violin.

A violin plot is similar to a boxplot but uses kernel density estimation to visualize the distribution of the data points.

#lq.diagram(
lq.hviolin(
(0, 2, 3, 4, 5, 6, 7, 8, 3, 4, 4, 2, 12),
(1, 3, 4, 5, 5, 5, 5, 6, 7, 12),
(0, 3, 4, 5, 6, 7, 8, 9),
)
)

See violin for how to customize the boxplot displayed within the violin plot.

By default, only the hviolin.median is highlighted as a special value. In addition, hviolin.mean and hviolin.extrema allow for further visualization options.

Parameters

..data : array

One or more data sets to generate violin plots from. Each dataset should be an array of numerical values (int or float).

y : auto | int | float | array    default: auto

The yy coordinate(s) to draw the violin plots at. If set to auto, plots will be created at integer positions starting with 1.

width : ratio | int | float | duration | array    default: 50%

Width of the violins. See bar.width.

bandwidth : auto | int | float    default: auto

Bandwidth for kernel density estimation. The bandwidth can drastically influence the appearance and its selection requires good care. If set to auto, Scott's rule is used (D.W. Scott, "Multivariate Density Estimation: Theory, Practice, and Visualization", 1992).

#let data = (2, 1.5, 1.4, 1, .4, .6, .5, -.5)

#lq.diagram(
lq.hviolin(data, bandwidth: auto),
lq.hviolin(data, y: 2, bandwidth: .2),
lq.scatter(data, (1.5,) * data.len())
)

fill : auto | none | color | gradient | tiling | ratio    default: 30%

How to fill the violins. If a ratio is given, the automatic color from style cycle is lightened (for values less than 100%) or darkened (for values greater than 100%). A value of 0% produces white and a value of 200% produces black.

stroke : none | length | color | stroke | gradient | tiling | dictionary    default: auto

How to stroke the violin outline.

color : auto | color    default: auto

Color for the violin plot. Sets the base color from which hviolin.fill and hviolin.stroke inherit. The boxplot fill and stroke also inherit from this color (see violin-boxplot). Explicit values for fill, stroke, or boxplot parameters take precedence.

median : none | lq.mark | str | color | stroke | length    default: "o"

Whether and how to display the median value. It can be visualized with a mark (see plot.mark) or a horizontal line (by passing a color, stroke, or length).

#lq.diagram(
height: 1cm,
lq.hviolin((0, 2, 3, 4, 7), median: white),
)

mean : none | lq.mark | str | color | stroke | length    default: none

Whether and how to display the mean value, like hviolin.median.

extrema : bool    default: false

Whether to mark the minium and maximum with vertical lines. See violin.extrema.

side : "both" | "low" | "high"    default: "both"

Which side to plot the KDE at.

#lq.diagram(
lq.hviolin(
(0, 2, 3, 4, 7),
(2, 2, 3, 5, 8),
side: "low"
),
lq.hviolin(
(1, 3, 8, 4, 2),
(3, 4, 3, 7, 9),
side: "high"
),
)

boxplot : dictionary | none    default: (:)

Arguments to pass to the violin-boxplot instance that is displayed inside the violin plot. If set to none, no boxplot is shown.

whisker-pos : int | float    default: 1.5

The position of the whiskers. See boxplot.whisker-pos.

num-points : int    default: 80

Number of points (i.e., the resolution) for the kernel density estimation.

trim : bool    default: true

Whether to trim the density to the datasets minimum and maximum value. If set to false, the range is automatically enhanced, depending on the bandwidth.

label : content    default: none

The legend label for this plot. See plot.label.

clip : bool    default: true

Whether to clip the plot to the data area. See plot.clip.

z-index : int | float    default: 2

Determines the zz position of this plot in the order of rendered diagram objects. See plot.z-index.