PlotViolin {DescTools} | R Documentation |

## Plot Violins Instead of Boxplots

### Description

This function serves the same utility as side-by-side boxplots, only it provides more detail about the different distribution. It plots violins instead of boxplots. That is, instead of a box, it uses the density function to plot the density. For skewed distributions, the results look like "violins". Hence the name.

### Usage

```
PlotViolin(x, ...)
## Default S3 method:
PlotViolin(x, ..., horizontal = FALSE, bw = "SJ", na.rm = FALSE,
names = NULL, args.boxplot = NULL)
## S3 method for class 'formula'
PlotViolin(formula, data, subset, na.action, ...)
```

### Arguments

`x` |
Either a sequence of variable names, or a data frame, or a model formula |

`horizontal` |
logical indicating if the densityplots should be horizontal; default |

`bw` |
the smoothing bandwidth (method) being used by |

`na.rm` |
logical, should NAs be omitted? The density-function can't do with missings. Defaults to |

`names` |
a vector of names for the groups. |

`formula` |
a formula, such as y ~ grp, where y is a numeric vector of data values to be split into groups according to the grouping variable grp (usually a factor). |

`data` |
a data.frame (or list) from which the variables in formula should be taken. |

`subset` |
an optional vector specifying a subset of observations to be used for plotting. |

`na.action` |
a function which indicates what should happen when the data contain NAs. Defaults to |

`...` |
The dots are passed to |

`args.boxplot` |
list of arguments for a boxplot to be superposed to the densityplot. By default (NULL) a
black boxplot will be drawn. Set this to |

### Value

If a boxplot was drawn then the function returns a list with the following components:

`stats` |
a matrix, each column contains the extreme of the lower whisker, the lower hinge, the median, the upper hinge and the extreme of the upper whisker for one group/plot. If all the inputs have the same class attribute, so will this component. |

`n` |
a vector with the number of observations in each group. |

`conf` |
a matrix where each column contains the lower and upper extremes of the notch. |

`out` |
the values of any data points which lie beyond the extremes of the whiskers. |

`group` |
a vector of the same length as |

`names` |
a vector of names for the groups. |

### Note

This function is based on `violinplot`

(package UsingR).
Some adaptions were made in the interface, such as to accept the same
arguments as `boxplot`

does. Moreover the function was extended by the option to have a boxplot superposed.

### Author(s)

John Verzani, Andri Signorell <andri@signorell.net>

### References

The code is based on the boxplot function from R/base.

### See Also

`boxplot`

, `PlotMultiDens`

, `density`

### Examples

```
# make a "violin"
x <- c(rnorm(100), rnorm(50,5))
PlotViolin(x, col = "brown")
par(mfrow=c(1,2))
f <- factor(rep(1:5, 30))
# make a quintet. Note also choice of bandwidth
PlotViolin(x ~ f, col = SetAlpha("steelblue",0.3), bw = "SJ", main="Vertical")
# and the same, but in horizontal arrangement
PlotViolin(x ~ f, col = SetAlpha("steelblue",0.3), bw = "SJ", horizontal = TRUE,
las=1, main="Horizontal")
# example taken from boxplot
boxplot(count ~ spray, data = InsectSprays, col = "lightgray", main="Boxplot")
PlotViolin(count ~ spray, data = InsectSprays, col = "lightgray", main="Violinplot")
# groupwise densityplots defined the same way as in boxplot
boxplot(len ~ supp*dose, data = ToothGrowth,
main = "Guinea Pigs' Tooth Growth",
xlab = "Vitamin C dose mg", ylab = "tooth length",
col=c("yellow", "orange"), lty=c(1,2)
)
b <- PlotViolin(len ~ supp*dose, data = ToothGrowth,
main = "Guinea Pigs' Tooth Growth",
xlab = "Vitamin C dose mg", ylab = "tooth length",
col=c("yellow", "orange"), lty=c(1,2)
)
# use points, if the medians deserve special attention
points(x=1:6, y=b$stats[3,], pch=21, bg="white", col="black", cex=1.2)
```

*DescTools*version 0.99.54 Index]