Uses 'ggplot2' to create normally distributed violin plots with specified means and standard deviations. This function can be useful in showing hypothetically normal distributions and confidence intervals.
A ggplot2 extension for creating normal violin plots with specified means and standard deviations.
To install the development version of ggnormalviolin, you need to check if devtools is installed. If not, run this:
Once you are sure you have devtools installed, you can install the development version of ggnormalviolin from GitHub by running this code:
Suppose there are 4 hypothetically normal distributions with specific means and standard deviations. They can be plotted like so:
library(ggplot2)library(ggnormalviolin)# Make datad <- data.frame(dist = c("A", "B", "C", "D"),dist_mean = c(80, 90, 110, 130),dist_sd = c(15, 10, 20, 5))# Make base plotp <- ggplot(data = d,aes(x = dist,mu = dist_mean,sigma = dist_sd,fill = dist)) +theme(legend.position = "none")# Add normal violinsp + geom_normalviolin()
Suppose you want to highlight the two tails of the distributions. Set
p_tails to specify the total area of the tails. Thus, if
= 0.05, each tail will represent the outermost 2.5% of the distributions
(i.e, 0.05 = 2 &mult; 0.025).
p + geom_normalviolin(p_tail = 0.05)
Suppose you want to highly only the upper tails. Set
the proportion desired.
p + geom_normalviolin(p_upper_tail = 0.05)
Analogously, you can highlight only the lower tails by setting the
p + geom_normalviolin(p_lower_tail = 0.05)
The defaults for highlighting is accomplished by selecting a subset of
the whole distribution, setting
tail_fill to black, and making the
then making the black fill transparent by setting
tail_alpha = 0.4.
Setting these values to other colors and levels of transparency can
dramatically change the look of the plot.
p + geom_normalviolin(p_tail = 0.05,tail_fill = "white",tail_alpha = 0.8,color = "gray20",size = 0.1)
If you want to omit the left or right side of the violins, you can set
face_right parameters to
p + geom_normalviolin(face_left = FALSE)
p + geom_normalviolin(face_right = FALSE,p_tail = 0.05)
You can set the
width of the violin to any size desired.
p + geom_normalviolin(width = 1)
If you want the shape of the distribution to remain constant, map the
width parameter to a multiple of the standard deviation.
p + geom_normalviolin(aes(width = dist_sd * 0.05))
By default, the normal violins extend 4 standard deviations in both
directions. Use the
nsigma parameter to set a different value.
p + geom_normalviolin(nsigma = 1.5)
If you set limits on the y scale, it is possible that some of the violins will be distorted or cut in pieces.
p +geom_normalviolin() +ylim(50,140)
This occurs because data outside the limits is discarded, breaking up
the polygons that compose the violins into smaller pieces. To prevent
such behavior, set the
lower_limit parameters equal
to the same limits you have specified for the y scale (or any other
values you wish).
p +geom_normalviolin(lower_limit = 50, upper_limit = 140) +ylim(50,140)
Alternately, you can set the limits in
will zoom the plot instead of discarding the data.
p +geom_normalviolin() +coord_cartesian(ylim = c(50, 140))
Please note that the ‘ggnormalviolin project’ is released with a Contributor Code of Conduct. By contributing to this project, you agree to abide by its terms.