Model Visualisation Toolbox for 'easystats' and 'ggplot2'
Overview
Provides plotting utilities supporting packages in the 'easystats' ecosystem (https://github.com/easystats/easystats) and some extra themes, geoms, and scales for 'ggplot2'. Color scales are based on https://materialui.co/. References: Lüdecke et al. (2021) doi:10.21105/joss.03393.
Changes
- The Linearity and Homogeneity of Variance panels of
check_model()(and the plot ofcheck_heteroscedasticity()) now draw the mean of each cell, joined by a line, in place of the LOESS smoother when the fitted values take only a few distinct values, for example in models with only categorical predictors. A LOESS fit over so few values warned and could bend far outside the data. Whenshow_ciisTRUE, the cell means get 95% error bars. Note that *performance* currently turnsshow_cioff for models whose terms are all factors without interactions (#464). plot()forcheck_model()andcheck_heteroscedasticity()gains ashow_smoothargument. Withshow_smooth = FALSE, the Linearity and Homogeneity of Variance panels draw neither the LOESS smoother nor the cell means, the Influential Observations panel draws no LOESS smoother, and the subtitles of the Linearity and Homogeneity of Variance panels no longer refer to a reference line (#464).
Show all changes in 0.15.0Hide the rest of the changes in 0.15.0
plot()fordatawizard::means_by_group()gets aflipargument. Useflip = FALSEto show the groups on the horizontal axis (#455).geom_violinhalf()andgeom_violindot()are now drawn with the *ggdist* package (ggdist::stat_slab()andggdist::geom_dots()), which they now need (version 3.3.3 or later). They work with facets and free scales (#81, #385), and the plots look a little different. Dodged groups each take half of their dodge cell, from its centre, as before. The dots ofgeom_violindot()were not dodged before. By default, they now go in the other half of the cell (they overlap a flipped half violin). The newintervalargument adds the median with 66% and 95% intervals (#68). Thebinwidthdefault ofgeom_violindot()is nowNA(it was 0.05), so ggdist sizes the dots to the data (#44). Other arguments in...ofgeom_violindot()now go toggdist::geom_dots()(instead ofgeom_dotplot()) as well as to the half violins, except the arguments of the density, the layout, and the interval, which go to the half violins only (see?geom_violindot). Awidthin...is the width of a whole violin, as ingeom_violin(), so each half violin is half as wide.boundsmust contain all values; otherwise the half violins are not drawn. Thestatargument is now ignored, with a warning for any value other than"ydensity"orggplot2::StatYdensity.geom_violindot()no longer works withcoord_polar().plot()formodelbased::estimate_contrasts()now draws joint contrasts of two or more variables, such ascontrast = c("am", "cyl"). The x axis shows the combinations of levels, such as "auto, 4".plot()formodelbased::estimate_contrasts()gains ashow_dataargument. Withshow_data = TRUE, the plot draws the raw data of the model as jittered points behind the lighthouses (easystats/modelbased#114).plot()formodelbased::estimate_contrasts()now draws more kinds of estimates. It draws means in aProbability,Proportion, orRatecolumn, such as the probabilities of a logistic model. It draws ratio contrasts fromcomparison = ratio ~ pairwiseas ratios of the means. With the default backend, it draws contrasts of a log response estimated withtransform = TRUEas ratios of the back-transformed means. The plot stops with an error for contrasts back-transformed from some other transformations, such assqrt(y). Wheninsight::find_transformation()reports a transformation other than"identity", it also stops for ratio contrasts estimated withtransform = TRUE. It also stops for contrasts and means on different scales, as theirpredictortransformarguments show. The help page lists the exceptions. Withshow_data = TRUE, the plot draws a logical or two-level factor response as 0 and 1. It also draws the raw data ofyfor a responselog(y),log2(y), orlog10(y). This needs contrasts and means estimated withtransform = TRUE.plot()formodelbased::estimate_contrasts()now draws ordinal and multinomial models, such asMASS::polr()andmclogit::mblogit(), with one panel per response category. Each panel shows the probabilities of that category and the contrasts within it. Contrasts between two categories are not drawn.show_data = TRUEstops with an error for these models. The plot also draws Bayesian ratio contrasts fromcomparison = ratio ~ pairwiseas ratios. Wheninsight::find_transformation()reports"identity", it draws ratio contrasts estimated withtransform = TRUEas ratios. It accepts contrasts and means on the link scale from the marginaleffects and emmeans backends together. For some models, such aslm(y ~ x), the link scale counts as the response scale. These models have an identity link, andinsight::find_transformation()reports their response as"identity". The link scale does not count for a model with a zero-inflation or hurdle part.plot()formodelbased::estimate_contrasts()now shows only the panels of thebylevels that the contrasts have. It leaves out the means and raw data of other levels. A numeric contrast variable at unevenly spaced values, such ascontrast = "wt=c(2,2.5,4)", gets a continuous x axis that keeps their spacing. Joint contrasts of three or more variables show one level per line in the axis labels. Abyvariable namedPANEL,ROW,COL,SCALE_X, orSCALE_Yno longer stops the plot.- If a term with a VIF below 2 has an upper confidence limit that is infinite or above the top of the plot, the collinearity plot now has a caption. The caption says that the interval formula (from *performance*) fails near VIF = 1, and that this is not high collinearity. This applies to
plot()forcheck_collinearity()and to the collinearity panel ofcheck_model(). The y axis now extends below VIF = 1, so the axis no longer cuts off points at 1 (#399).
Bug fixes
plot()for structural equation models fromparameters::model_parameters()drew latent factors as observed variables and indicators as latent variables. Latent factors are now drawn as circles and indicators as squares.plot()for structural equation models now gives an informative error when the selectedcomponenthas no paths to plot, for examplecomponent = "regression"for a confirmatory factor analysis (#243).geom_binomdensity()now works with facets. It no longer drops the columns other thanxandy, so each panel shows only its own data (#192).- When
check_model()failed to create plots, the informative message about troubleshooting and workarounds was no longer printed. This should now work again. plot()formodelbased::estimate_contrasts()now draws each contrast estimated withbyfrom the means of its ownbylevel. Previously, it mixed the means of allbylevels into each contrast. If the means listed thebyvariable first, it drew no contrasts. The plot now shows one panel per level, or combination of levels, of thebyvariables. The x axis now shows the contrasted variable in the order of its levels (easystats/modelbased#267).- When some observations had a missing Cook's distance,
plot()forcheck_outliers()failed with "arguments imply differing number of rows". An example is rows with missing values in a model fitted withna.action = na.exclude. The scree and count plots now leave these observations out, and the labels still name the right rows.
From NEWS.md in the release
Install
Health
- OK13 OK2026-10-21
- ERROR12 OK, 1 ERROR2026-10-20
- OK13 OK2026-10-18
- ERROR11 OK, 2 ERROR2026-10-16
- OK13 OK2026-09-08
Show 12 earlier changesHide 12 earlier changes
- ERROR11 OK, 2 ERROR2026-09-02
- OK13 OK2026-08-04
- NOTE12 OK, 1 NOTE2026-08-01
- OK13 OK2026-05-20
- ERROR12 OK, 1 ERROR2026-05-17
- OK13 OK2026-05-09
- ERROR12 OK, 1 ERROR2026-04-30
- OK13 OK2026-04-28
- ERROR13 OK, 1 ERROR2026-04-24
- OK14 OK2026-03-31
- ERROR13 OK, 1 ERROR2026-03-25
- OK14 OK2026-03-10
Documentation
- Help pages
- 79 (1 internal)includes a package overview page
- Examples that run
- 92%61 run in a plain check (21 of them under a condition) · 3 only when donttest examples are enabled (R CMD check --as-cran) · 2 never run
- Exported functions with examples
- 77%
- Documented parameters
- 96%
- Return-value docs
- 23%
- Help pages citing references
- 6%
Downloads
Repository
- PRs merged (all time)
- 90%
- Median days to close, 50 most recently updated closed issues
- 536
- Median days to close, 50 most recently updated closed PRs
- 0
Stars over time
Forks over time
Releases over time
Issues over time
PRs over time
Commits over time
Commit identities over time
16 development-tooling and community-health practices detected across 7 families in the upstream repository
Checks run against github.com/easystats/see on 2026-10-21.
Funding links: GitHub Sponsors
The repository owner accepts GitHub Sponsors
GitHub Pages site last deployed 2026-10-20
pkgdown site last built 2026-10-20
Show all practicesHide 3 practices
This repository shows signs of AI coding tools.
- Claude Codefirst seen 2025-09-14Seen in the repository: .claudeNamed in .Rbuildignore: .claude
- GitHub Copilotfirst seen 2025-09-15Pull request: opened by its own accountCommits: 2 by its own account · at least 2 crediting it in the message
Dependencies
Installing see adds 26 packages (7 with compiled code, 23 MB of source tarballs). Heaviest: ggplot2 6.0 MB, patchwork 3.2 MB, performance 1.9 MB.
CRAN will archive these unless their check problems are fixed by the date shown. This package needs each one to install.
- insightfix by Nov 14
Show all 19 packagesHide all 19 packages
Code & Tests
People & History
Previously maintained by Indrajeet Patil (0.7.3 to 0.12.0) and Daniel Lüdecke (0.1.0 to 0.7.2).
Pick two releases to compare their code metrics.
- 0.15.0Latest
- 0.14.22026-09-01 · diff ↗
- 0.14.12026-06-29 · diff ↗
- 0.14.02026-05-24 · diff ↗ ·
added 4 exports
geom_count_halo, geom_jitter_halo, geom_point_halo, geom_pointrange_halo - RR 4.6.0 released · 2026-04-24
- 0.13.02026-01-30 · diff ↗
- 0.12.02025-09-14 · diff ↗
- RR 4.5.0 released · 2025-04-11
- 0.11.0
- 0.10.02025-01-22 · diff ↗
- 0.9.02024-09-06 · diff ↗
- 0.8.52024-07-17 · diff ↗
- 0.8.42024-04-29 · diff ↗
- RR 4.4.0 released · 2024-04-24
- 0.8.32024-03-24 · diff ↗
- 0.8.22024-02-14 · diff ↗
Show 30 earlier eventsHide 30 earlier events
- 0.8.12023-11-03 · diff ↗
- 0.8.02023-06-05 · diff ↗
- RR 4.3.0 released · 2023-04-21
- 0.7.5
- 0.7.42022-11-26 · diff ↗ ·
added 10 exports
palette_colorhex, scale_color_colorhex, scale_color_colorhex_c, scale_color_colorhex_d, scale_colour_colorhex, scale_colour_colorhex_c, scale_colour_colorhex_d, scale_fill_colorhex, scale_fill_colorhex_c, scale_fill_colorhex_d - 0.7.32022-09-20 · diff ↗
- 0.7.22022-08-10 · diff ↗ ·
added 8 exports
oi_colors, okabeito_colors, palette_oi, palette_okabeito, scale_color_okabeito, scale_colour_okabeito, scale_fill_oi, scale_fill_okabeito - 0.7.12022-06-20 · diff ↗
- RR 4.2.0 released · 2022-04-22
- 0.7.02022-03-31 · diff ↗
- 0.6.92022-02-15 · diff ↗
- 0.6.82021-10-03 · diff ↗
- 0.6.7
- 0.6.42021-05-29 · diff ↗
- RR 4.1.0 released · 2021-05-18
- 0.6.32021-04-09 · diff ↗
- 0.6.22021-02-04 · diff ↗
- 0.6.12020-12-06 · diff ↗
- 0.6.02020-09-13 · diff ↗ ·
added 6 exports
geom_count2, geom_count_borderless, geom_jitter_borderless, geom_point_borderless, geom_pointrange2, geom_pointrange_borderless - 0.5.22020-07-27 · diff ↗ ·
added 22 exports
bluebrown_colors, palette_bluebrown, palette_see, scale_color_bluebrown, scale_color_bluebrown_c, scale_color_bluebrown_d, scale_color_see, scale_color_see_c, scale_color_see_d, scale_colour_bluebrown, scale_colour_bluebrown_c, scale_colour_bluebrown_d, scale_colour_see, scale_colour_see_c, scale_colour_see_d, scale_fill_bluebrown, scale_fill_bluebrown_c, scale_fill_bluebrown_d, scale_fill_see, scale_fill_see_c, scale_fill_see_d, see_colors - 0.5.1
- 0.5.0
- RR 4.0.0 released · 2020-04-24
- 0.4.12020-03-06 · diff ↗
- 0.4.0
- 0.3.0
- 0.2.12019-08-01 · diff ↗ ·
added 22 exports
metro_colors, palette_metro, palette_social, scale_color_metro, scale_color_metro_c, scale_color_metro_d, scale_color_social, scale_color_social_c, scale_color_social_d, scale_colour_metro, scale_colour_metro_c, scale_colour_metro_d, scale_colour_social, scale_colour_social_c, scale_colour_social_d, scale_fill_metro, scale_fill_metro_c, scale_fill_metro_d, scale_fill_social, scale_fill_social_c, scale_fill_social_d, social_colors - 0.2.0
- 0.1.02019-05-24
- RR 3.6.0 released · 2019-04-26
Package metadata
- First published
- 2019-05-24
- Total releases
- 38 / 7 yrs
- License
- MIT + file LICENSE OSI · relicensed from GPL-3 in 0.8.1
- Minimum R
- ≥ 4.1
- Download size
- 217 KB
Cite
Cite this package
Run in R for the authors' entry:
citation("see")The package provides a citation file, so citation() returns the authors' own entry.
It points to 10.21105/joss.03393.
Cite the R Observatory
For a number measured here: a download total, a coverage figure, an archival date.
From data release v2026-10-25, which the citation names so these numbers can be found later. More on citing and the projects behind them.