Draws a kernel density plot in combination with a boxplot in its middle. The shape of the violin is constructed using a mirrored density curve. This plot is especially designed for cases where the individual errors are zero or too small to be visualised. The idea for this plot is based on the the 'volcano plot' in the ggplot2 package by Hadley Wickham and Winston Chang. The general idea for the violin plot seems to have been introduced by Hintze and Nelson (1998).
The function is passing several arguments to the functions plot, stats::density, graphics::boxplot:
Supported arguments are:
xlim
, main
, xlab
, ylab
, col.violin
, col.boxplot
, mtext
, cex
, mtext
Valid summary keywords
'n'
, 'mean'
, 'median'
, 'sd.abs'
, 'sd.rel'
, 'se.abs'
, 'se.rel'
.
'skewness'
, 'kurtosis'
Usage
plot_ViolinPlot(
data,
boxplot = TRUE,
rug = TRUE,
summary = NULL,
summary.pos = "sub",
na.rm = TRUE,
...
)
Arguments
- data
numeric or RLum.Results (required): input data for plotting. Alternatively a data.frame or a matrix can be provided, but only the first column will be considered by the function
- boxplot
logical (with default): enable or disable boxplot
- rug
logical (with default): enable or disable rug
- summary
character (optional): add statistic measures of centrality and dispersion to the plot. Can be one or more of several keywords. See details for available keywords.
- summary.pos
numeric or character (with default): optional position keywords (cf. legend) for the statistical summary. Alternatively, the keyword
"sub"
may be specified to place the summary below the plot header. However, this latter option in only possible ifmtext
is not used.- na.rm
logical (with default): exclude NA values from the data set prior to any further operations.
- ...
further arguments and graphical parameters passed to plot.default, stats::density and boxplot. See details for further information
Note
Although the code for this function was developed independently and just the idea for the plot
was based on the 'ggplot2' package plot type 'volcano', it should be mentioned that, beyond this,
two other R packages exist providing a possibility to produces this kind of plot, namely:
'vioplot'
and 'violinmplot'
(see references for details).
How to cite
Kreutzer, S., 2024. plot_ViolinPlot(): Create a violin plot. Function version 0.1.4. In: Kreutzer, S., Burow, C., Dietze, M., Fuchs, M.C., Schmidt, C., Fischer, M., Friedrich, J., Mercier, N., Philippe, A., Riedesel, S., Autzen, M., Mittelstrass, D., Gray, H.J., Galharret, J., Colombo, M., 2024. Luminescence: Comprehensive Luminescence Dating Data Analysis. R package version 0.9.26. https://r-lum.github.io/Luminescence/
References
Daniel Adler (2005). vioplot: A violin plot is a combination of a box plot and a kernel density plot. R package version 0.2 http://CRAN.R-project.org/package=violplot
Hintze, J.L., Nelson, R.D., 1998. A Box Plot-Density Trace Synergism. The American Statistician 52, 181-184.
Raphael W. Majeed (2012). violinmplot: Combination of violin plot with mean and standard deviation. R package version 0.2.1. http://CRAN.R-project.org/package=violinmplot
Wickham. H (2009). ggplot2: elegant graphics for data analysis. Springer New York.
Author
Sebastian Kreutzer, Institute of Geography, Heidelberg University (Germany) , RLum Developer Team
Examples
## read example data set
data(ExampleData.DeValues, envir = environment())
ExampleData.DeValues <- Second2Gray(ExampleData.DeValues$BT998, c(0.0438,0.0019))
## create plot straightforward
plot_ViolinPlot(data = ExampleData.DeValues)