Visualize probability distributions
vistributions visualizes the normal, t, F, chi-square and binomial
distributions with ggplot2. Each family exposes the same grammar:
_plot for the shape, _perc for quantiles from probabilities and
_prob for probabilities from quantiles, with shaded tails and
annotated cutoffs for teaching and publication.
# Install release version from CRAN
install.packages("vistributions")
# Install development version from GitHub
# install.packages("devtools")
# devtools::install_github("rsquaredacademy/vistributions")
install.packages("vistributions", repos = c('https://rsquaredacademy.r-universe.dev', 'https://cloud.r-project.org'))
| Family | Shape | Quantile from p | Probability from q |
|---|---|---|---|
| Normal | vdist_normal_plot() |
vdist_normal_perc() |
vdist_normal_prob() |
| t | vdist_t_plot() |
vdist_t_perc() |
vdist_t_prob() |
| F | vdist_f_plot() |
vdist_f_perc() |
vdist_f_prob() |
| Chi-square | vdist_chisquare_plot() |
vdist_chisquare_perc() |
vdist_chisquare_prob() |
| Binomial | vdist_binom_plot() |
vdist_binom_perc() |
vdist_binom_prob() |
All plotting functions print by default and return the ggplot object
invisibly. Pass print_plot = FALSE to get a composable plot object for
further customization with + labs(), + theme_minimal() or
ggplot2::ggsave().
# distribution shape
vdist_normal_plot()

# quantile from a probability (upper 10%)
vdist_normal_perc(0.10, mean = 60, sd = 3, type = "upper")

# probability from quantiles (middle 50%)
vdist_normal_prob(c(85, 100), mean = 90, sd = 4, type = "both")

vdist_t_plot(df = 8)

# upper 15th percentile
vdist_t_perc(0.15, df = 8, type = "upper")

# probability between -2 and 2
vdist_t_prob(2, df = 6, type = "interval")

vdist_chisquare_plot(df = 5)

# tenth percentile
vdist_chisquare_perc(0.10, df = 8, type = "lower")

# P(X > 8.79) with 12 df
vdist_chisquare_prob(8.79, df = 12, type = "upper")

vdist_f_plot()

# upper twentieth percentile, F(4, 5)
vdist_f_perc(0.20, num_df = 4, den_df = 5, type = "upper")

# P(X > 3.89), F(4, 5)
vdist_f_prob(3.89, num_df = 4, den_df = 5, type = "upper")

vdist_binom_plot(12, 0.2)

# exactly 4 successes out of 12
vdist_binom_prob(12, 0.2, 4, type = "exact")

# at most 1 success
vdist_binom_prob(12, 0.2, 1, type = "lower")

library(ggplot2)
p <- vdist_normal_plot(mean = 60, sd = 3, print_plot = FALSE)
p + theme_minimal() + labs(title = "Normal(60, 3)")

vistributions focuses on five teaching
families with annotated ggplot2 output.xpnorm() and
friends) is course-framework bound; vistributions works standalone.vistributions is the lightweight classroom companion. Native
distributional dispatch is planned for v1.0 (see roadmap/).If you encounter a bug, please file a minimal reproducible example using
reprex on
GitHub. For
questions and clarifications, please use Stack Overflow (tagged
vistributions or r).