There is a newer version of this record available.

Software Open Access

tidybayes: Tidy Data and Geoms for Bayesian Models

Matthew Kay

  • Various geoms and stats have been merged together under the geom_slabinterval() and stat_slabinterval() "meta-geom" (#84). This has enabled a bunch of new geoms to be created (see vignette("slabinterval") and fixed a number of outstanding issues:
    • Histogram geoms and histogram+interval geoms (#162)
    • CCDF bar charts and gradient plots
    • The alpha aesthetic can now be mapped on eye plots (and all related geoms) (#163)
    • Vertical version of eye plot (and vertical/horizontal variants of all slabinterval variants) (#56)
    • Intervals and densities are now correctly grouped in eye plots (e.g. when dodging) (#83)
    • Fill and color aesthetics can now be mapped within the slab part of eyes (and all slabintervals), allowing gradients to be made easily (#136) and regions of practical equivalence (ROPEs) to be annotated easily. Examples of ROPEs have been added to the main vignettes (#129).
    • Intervals and eyes support position = "dodge" correctly (#180)
    • The new geoms (and replacements for old ones) have custom scales allowing fine-grained targeting of fill, color, and size aesthetics of all the component parts of the composite geoms.
    • There is a new sub-family of auto-sizing Wilkinson dotplot stats and geoms, geom_dots() and geom_dotsinterval() (#210). These include a quantiles parameter on the stats to make it easy to create quantile dotplots.
  • Analytical distributions can be visualized using the new stat_dist_... family of geoms for both the geom_slabinterval() family and geom_lineribbon() (see stat_dist_slabinterval() and stat_dist_lineribbon()).
  • The new parse_dist(), which parses distribution specifications (like normal(0,1)) into tidy columns, can be combined with the stat_dist_... family of geoms to easily to visualize priors (e.g. from brms).
  • New distribution functions for the marginal LKJ distribution (dlkjcorr_marginal() and company), combined with parse_dist() and the stat_dist_... family make it easy to visualize the marginal LKJ prior on a cell in a correlation matrix. (#191 #192)
  • There is a new vignette on frequentist uncertainty visualization, vignette("freq-uncertainty-vis"), also made possible by the new stat_dist_... family of geoms (#188)
  • tidy_draws() can now be applied to already-tidied data frames, allowing dependent functions (like spread_draws() and gather_draws()) to also be applied to data frames directly (#82). This can be a useful optimization in workflows where the initial tidying is slow but spreading/gathering is fast (see discussion in #144)
  • Kruschke-style distribution-of-distribution plots are now easier to construct with stat_dist_slabh(). An example of this usage is in vignette("tidy-brms").
  • hdi() now uses trimmed densities by default to avoid odd behavior with bounded distributions (#165).
  • compare_levels(comparison = ) now uses a modern tidy approach to dealing with unevaluated expressions, so rlang::exprs() can be used in place of plyr::.() (#174, #175)
  • geom_lineribbon() now works with ggnewscale (#178)
  • fitted_draws()/predicted_draws() give more helpful error messages on unsupported models (#177)

Files (36.8 MB)
Name Size
36.8 MB Download
All versions This version
Views 1,43394
Downloads 771
Data volume 2.2 GB36.8 MB
Unique views 1,27087
Unique downloads 621


Cite as