violin
violin(x, y)
Draw a violin plot.
Arguments
x
: positions of the categoriesy
: variables whose density is computed
Plot type
The plot type alias for the violin
function is Violin
.
Attributes
bandwidth
= automatic
— No docs available.
boundary
= automatic
— No docs available.
color
= @inherit patchcolor
— No docs available.
cycle
= [:color => :patchcolor]
— No docs available.
datalimits
= (-Inf, Inf)
— Specify values to trim the violin
. Can be a Tuple
or a Function
(e.g. datalimits=extrema
).
depth_shift
= 0.0
— adjusts the depth value of a plot after all other transformations, i.e. in clip space, where 0 <= depth <= 1
. This only applies to GLMakie and WGLMakie and can be used to adjust render order (like a tunable overdraw).
dodge
= automatic
— No docs available.
dodge_gap
= 0.03
— No docs available.
fxaa
= true
— adjusts whether the plot is rendered with fxaa (anti-aliasing, GLMakie only).
gap
= 0.2
— Shrinking factor, width -> width * (1 - gap)
.
inspectable
= true
— sets whether this plot should be seen by DataInspector
.
inspector_clear
= automatic
— Sets a callback function (inspector, plot) -> ...
for cleaning up custom indicators in DataInspector.
inspector_hover
= automatic
— Sets a callback function (inspector, plot, index) -> ...
which replaces the default show_data
methods.
inspector_label
= automatic
— Sets a callback function (plot, index, position) -> string
which replaces the default label generated by DataInspector.
max_density
= automatic
— No docs available.
mediancolor
= @inherit linecolor
— No docs available.
medianlinewidth
= @inherit linewidth
— No docs available.
model
= automatic
— Sets a model matrix for the plot. This overrides adjustments made with translate!
, rotate!
and scale!
.
n_dodge
= automatic
— No docs available.
npoints
= 200
— No docs available.
orientation
= :vertical
— Orientation of the violins (:vertical
or :horizontal
)
overdraw
= false
— Controls if the plot will draw over other plots. This specifically means ignoring depth checks in GL backends
scale
= :area
— Scale density by area (:area
), count (:count
), or width (:width
).
show_median
= false
— Show median as midline.
side
= :both
— Specify :left
or :right
to only plot the violin on one side.
space
= :data
— sets the transformation space for box encompassing the plot. See Makie.spaces()
for possible inputs.
ssao
= false
— Adjusts whether the plot is rendered with ssao (screen space ambient occlusion). Note that this only makes sense in 3D plots and is only applicable with fxaa = true
.
strokecolor
= @inherit patchstrokecolor
— No docs available.
strokewidth
= @inherit patchstrokewidth
— No docs available.
transformation
= automatic
— No docs available.
transparency
= false
— Adjusts how the plot deals with transparency. In GLMakie transparency = true
results in using Order Independent Transparency.
visible
= true
— Controls whether the plot will be rendered or not.
weights
= automatic
— vector of statistical weights (length of data). By default, each observation has weight 1
.
width
= automatic
— Width of the box before shrinking.
Examples
using CairoMakie
categories = rand(1:3, 1000)
values = randn(1000)
violin(categories, values)
using Makie, CairoMakie
fig = Figure()
xs = vcat([fill(i, i * 1000) for i in 1:4]...)
ys = vcat(randn(6000), randn(4000) * 2)
for (i, scale) in enumerate([:area, :count, :width])
ax = Axis(fig[i, 1])
violin!(ax, xs, ys; scale, show_median=true)
Makie.xlims!(0.2, 4.8)
ax.title = "scale=:$(scale)"
end
fig
using CairoMakie
categories = rand(1:3, 1000)
values = map(categories) do x
return x == 1 ? randn() : x == 2 ? 0.5 * randn() : 5 * rand()
end
violin(categories, values, datalimits = extrema)
using CairoMakie
N = 1000
categories = rand(1:3, N)
dodge = rand(1:2, N)
side = rand([:left, :right], N)
color = @. ifelse(side === :left, :orange, :teal)
values = map(side) do s
return s === :left ? randn() : rand()
end
violin(categories, values, dodge = dodge, side = side, color = color)
using CairoMakie
N = 1000
categories = rand(1:3, N)
side = rand([:left, :right], N)
color = map(categories, side) do x, s
colors = s === :left ? [:red, :orange, :yellow] : [:blue, :teal, :cyan]
return colors[x]
end
values = map(side) do s
return s === :left ? randn() : rand()
end
violin(categories, values, side = side, color = color)
Using statistical weights
using CairoMakie, Distributions
N = 100_000
categories = rand(1:3, N)
values = rand(Uniform(-1, 5), N)
w = pdf.(Normal(), categories .- values)
fig = Figure()
violin(fig[1,1], categories, values)
violin(fig[1,2], categories, values, weights = w)
fig
Horizontal axis
using CairoMakie
fig = Figure()
categories = rand(1:3, 1000)
values = randn(1000)
ax_vert = Axis(fig[1,1];
xlabel = "categories",
ylabel = "values",
xticks = (1:3, ["one", "two", "three"])
)
ax_horiz = Axis(fig[1,2];
xlabel="values", # note that x/y still correspond to horizontal/vertical axes respectively
ylabel="categories",
yticks=(1:3, ["one", "two", "three"])
)
# Note: same order of category/value, despite different axes
violin!(ax_vert, categories, values) # `orientation=:vertical` is default
violin!(ax_horiz, categories, values; orientation=:horizontal)
fig
These docs were autogenerated using Makie: v0.21.0, GLMakie: v0.10.0, CairoMakie: v0.12.0, WGLMakie: v0.10.0