sjPlot 2.5.0 Unreleased

New functions

Deprecated

Following functions are now deprecated:

Removed / Defunct

Following functions are now defunct:

Changes to functions

  • plot_model() and plot_models() get a prefix.labels-argument, to prefix automatically retrieved term labels with either the related variable name or label.
  • plot_model() gets a show.zeroinf-argument to show or hide the zero-inflation-part of models in the plot.
  • plot_model() now plots the zero-inflated part of the model for brmsfit-objects.
  • plot_model() now plots multivariate response models, i.e. models with multiple outcomes.
  • Diagnostic plots in plot_model() (type = "diag") can now also be used with brmsfit-objects.
  • Axis limits of diagnostic plots in plot_model() (type = "diag") for Stan-models (brmsfit or stanreg resp. stanfit) can now be set with the axis.lim-argument.
  • The grid.breaks-argument for plot_model() and plot_models() now also takes a vector of values to directly define the grid breaks for the plot.
  • Better default calculation for grid breaks in plot_model() and plot_models() when the grid.breaks-argument is of length one.
  • The terms-argument for plot_model() now also allows the specification of a range of numeric values in square brackets for marginal effects plots, e.g. terms = "age [30:50]".

Bug fixes

  • Fixed typo for glmmTMB-tidier, which may have returned wrong data for zero-inflation part of model.
  • Multiple random intercepts for multilevel models fitted with brms area now shown in each own facet per intercept.
  • Remove unnecessary warning in sjp.likert() for uneven category count when neutral category is specified.

sjPlot 2.4.1 2018-02-05

General

  • Remove unnecessary imports.
  • Add back save_plot() function.
  • Revised and updated package vignettes.

New functions

  • tab_df() and tab_dfs() as (more generic) replacement for sjt.df(). tab_df() prints the content of a data frame as HTML table, while tab_dfs() prints a list of data frames into a HTML table. The HTML table is then displayed in the Viewer-pane of RStudio or in a web browser.

Deprecated

Changes to functions

  • plot_model() now also supports clm-models from package ordinal, polr-models from package MASS, multinom-models from package nnet and Zelig-relogit-models from package Zelig.
  • plot_model() gets a show.legend-argument to show or hide the legend for marginal effects plots.
  • plot_model() gets a se-argument to plot (robust) standard errors instead of confidence intervals for coefficient-plots.
  • Diagnostic plots in plot_model() (type = "diag") now also plot diagnostics of random effects from (generalized) linear mixed models.
  • The ...-argument of plot_model() now also accepts the arguments sep_in and sep_out, which are passed down to snakecase::to_any_case() for case conversion of term labels (axis labels).
  • The title-argument in plot_model() now also works for plotting random effects (type = "re").
  • sjt.itemanalysis() no longer returns a list of score items, but only a data frame of scores.
  • sjp.grpfrq() gets a show.ci-argument to add notches to boxplots.

Bug fixes

  • view_df() did not work with double values (with decimal points) when show.values = TRUE.
  • view_df() caused an error when a variable has completely missing values.
  • plot_models() did not properly remove intercepts from output for survey models, when show.intercept = FALSE.
  • plot_models() did not automatically transform axis for all applicable model types.
  • get_model_data() did not work for marginal effects plots.
  • Fixed a bug that was introduced during the past update in sjt.grpmean(), resulting in multiple table outputs and a wrong overall p-value in the summary line.
  • Model weights are now correctly taken into account for marginal effect plots in plot_model().
  • sjp.likert() did not show correct order for factors with character levels, when a neutral category was specified and was not the last factor level.
  • Fixed issue when plotting random effects (type = "re") for specific brms-models.

sjPlot 2.4.0 2017-10-19

General

New functions

Changes to functions

  • view_df() now better handles string variables and gets a show.string.values-argument to omit the output of values from string variables.
  • view_df() gets a max.len-argument to truncate output for variables with many values.
  • view_df() displays more information on non-labelled, numeric variables.
  • sjp.pca() and sjt.pca() now give more informative error messages when just one component is extracted.

Bug fixes

  • Fixed bug with rm.terms-argument in plot_models().
  • In rare situations, view_df() did not work for string variables with missing values.
  • Fixed issue with wrong footnote text when saving the output of sjt.pca() as file.
  • sjp.xtab() did not work when show.n and show.prc were set to FALSE, but show.values was TRUE.

sjPlot 2.3.3 2017-08-23

General

  • Fixed issue with latest tidyr-update on CRAN.
  • HTML-tables (sjt.*-functions) displayed in the viewer pane now automatically add a CSS-style for white page background. This fixes an RStudio issue on OS X, where the new look’n’feel used dark backgrounds in the viewer pane, making output hardly readable.

sjPlot 2.3.2 2017-08-04

General

  • Revising package code from scratch. Part of the old functions will be replaced by new ones, making the code base easier to maintain and reduce redundant functions by merging them together. In the course of the next updates, functions will first become deprecated and later defunct.
  • Changed imports to avoid using deprecated functions.
  • Use more informative warning- and error-messages for certain functions.

New functions

  • plot_models() as replacement for sjp.lmm() and sjp.glmm() (which are now deprecated).
  • sjp.fa() and sjt.fa() to plot or print as table the results of factor analyses.

Bug fixes

  • The mean and standard deviation in the summary of sjt.frq() were not correctly computed, when auto.group-argument was specified. This bug was introduced in the last update and is not fixed again.
  • Values of character vectors were not always correctly sorted in view_df() (if show.frq = TRUE).

sjPlot 2.3.1 2017-03-05

General

  • All sjt-functions can now be directly integrated into knitr-code-chunks, because sjPlot exports a knitr-print-method (see vignette("sjtbasic", "sjPlot")).
  • sjtab() now also works within knitr-documents (see vignette("sjtbasic", "sjPlot")).
  • Updated Namespace for functions that moved from package sjstats to sjmisc.

Changes to functions

  • Changed defaults for save_plot().
  • save_plot() now also supports svg-format.
  • For effect-plots (type = "eff"), the axis.title-argument can now be used to change the title of y-axes.
  • For sjp.lm(), sjp.glm(), sjp.lmer() and sjp.glmer(), if color palette has more values than needed, it is silently shortend to the required length.
  • When plotting mixed models, argument geom.colors now also applies to plot-type type = "ri.slope".
  • Default correlation-method for sjt.corr() and sjp.corr() is now pearson.
  • Argument emph.p for printing tables of regression models now defaults to FALSE.

Bug fixes

  • Fixed bug in sjt.frq() for variables with many missing values and labelled values that did not occur on that variable.
  • Argument value.labels had no effect for sjt.frq().
  • Automatic label detection in sjt.grpmean() sometimes not worked for factors without variable labels.
  • sjp.glm() used Odds Ratios as default title for y-axis when plotting marginal effects. Fixed, now y-axis is correctly labelled.
  • sjt.glm() used “Odds Ratios” as default column heading for the estimates, even for poisson or other models. Now the string for column headers is selected based on the first model input of the function.
  • Solved issue with warning in prediction-plots (type = "pred") for categorical variables on the x-axis.

sjPlot 2.3.0 2017-02-06

General

  • Vignettes were added to this package.

Changes to functions

  • You can use geom.colors = "bw" for linetype-plots, to create black & white figures that use different linetypes instead of different colors.
  • sjp.kfold_cv() now also supports poisson and negative binomial regression models.
  • sjp.pca() and sjt.pca() get a rotation-argument, to use either varimax- or oblimin-transformation of factor loadings.
  • Argument show.value now also applies to bar plots in sjp.pca().
  • sjt.glm(), for generalized linar (mixed) models, now shows adjusted standard errors, using the Taylor series-based delta method.
  • More precise rounding of percentage values in sjt.xtab(), sjp.xtab() and sjp.grpfrq().
  • Cramer’s V in sjt.xtab() is now dentoted as V.
  • sjt.xtab() gets a ...-argument, to pass down further arguments to the test statistics functions chisq.test() and fisher.test().
  • sjt.xtab() gets a statistics-argument, to select one of different measures of associations for the table summary.

Bug fixes

  • Plotting or table output of regression models did not work with null-models (i.e. with intercept only).

sjPlot 2.2.1 2017-01-10

Changes to functions

  • sjp.lm() for type = "ma" now uses subtitles in multi-line plot-titles.

Bug fixes

  • Residuals in sjp.kfold_cv() had wrong leading sign (i.e. positive residuals were negative and vice versa).

sjPlot 2.2.0 2016-12-27

New Functions

Changes to functions

  • Argument scatter.plot was renamed to show.scatter.
  • Argument var.labels in sjt.frq() was renamed to title.
  • sjplot() and sjtab() also accept grouped data frames, to create plots or tables for all subgroups.
  • For sjp.glm() and sjp.glmer(), type = "pred", type = "slope", type = "pred.fe" and type = "fe.slope" can now also plot data points when show.scatter = TRUE. Use point.alpha to adjust alpha-level of data points.
  • For sjp.lm(), sjp.lmer(), sjp.glm() and sjp.glmer(), type = "pred" and type = "pred.fe" now plot error bars for show.ci = TRUE and a discrete variable on the x-axis.
  • For sjp.glm() and sjp.glmer(), type = "pred" and type = "pred.fe" now accept three variables for the vars-argument, to facet grouped predictions by a third variable.
  • For sjp.lm(), sjp.lmer(), sjp.glm() and sjp.glmer(), the ...-ellipses argument now is also passed down to all errorbars- and smooth-geoms in prediction- and effect-plots, so you can now use the width-argument to show the small stripes at the lower/upper end of the error bars, the alpha-argument to define alpha-level or the level-argument to define the level of confidence bands.
  • sjp.lm(), sjp.lmer(), sjp.glm() and sjp.glmer() get a point.color-argument, do define color of point-geoms when show.scatter = TRUE. If not defined, point-geoms will have same group-color as lines.
  • Effect-plots (type = "eff") now plot data points for discrete variables on the x-axis.
  • sjt.lm() and sjt.glm() get a robust-argument to compute robust standard errors and confidence intervals.
  • sjp.resid() now also returns a plot with the residual pattern, $pattern.
  • Plot and axis titles from effect-plots can now be changed with title or axis.title argument. Use a character vector of length > 1 to define (axis) titles for each plot or facet; use "" to remove the titles.
  • Pick better defaults for geom.size-argument for histogram and density plots in sjp.frq().
  • Improved automatic label detection for regression models for plot or table output.

Bug fixes

  • Restored correct order of categories in sjp.xtab() and sjp.grpfrq() for stacked bars (position_stack() reversed order since last ggplot2-update), so labels are now correclty positioned again.
  • Restored correct order of categories in sjp.likert(), so groups are now in correct order again.
  • Fixed bug in sjt.grpmean() for variables with unused value labels (values that were labelled, but did not appear on the vector).
  • Fixed wrong documentation for show.summary-argument in sjt.xtab().
  • sjt.frq() and sjp.frq() showed messed up labels when a labelled vector had both NA values and NaN or infinite values.
  • sjtab() did not create tables for fun = "xtab" with additional arguments.

sjPlot 2.1.2 2016-11-12

General

Changes to functions

  • Restored order of categories in sjp.stackfrq(), which were reversed by the last ggplot2-update, where position_stack() now sort the stacking order to match grouping order.

Bug fixes

  • Fixed bug in sjplot() that caused figures not being plotted in certain situations.
  • Fixed bug in sjp.lmm(), which caused an error for plotting multiple mixed models when Intercept was hidden.
  • Fixed bug in sjp.lmm(), which caused an error for plotting multiple mixed models when type = "std" or type = "std2".

sjPlot 2.1.1 2016-10-31

General

  • Some fixes needed to be compatible with the latest ggplot2-update.

New functions

  • sjplot, a pipe-friendly wrapper for some of this package’s plotting-functions.
  • sjtab, a pipe-friendly wrapper for some of this package’s table-functions.

sjPlot 2.1.0 2016-09-27

New functions

  • sjp.resid, an experimental function to plot and analyze residuals from linear models.
  • plot_grid to plot a list of ggplot-objects as arranged grid in a single plot.
  • set_theme to use a preset of default themes for plots from the sjp-functions.

Changes to functions

  • For sjp.glmer and sjp.lmer, argument show.ci now also applies for plotting random effects (type = "re", the default), so confidence intervals may not be calculated. This may be useful in some cases where computation of standard errors for random effects caused an error.
  • Effect plots (type = "eff") for sjp.lm, sjp.glm, sjp.lmer and sjp.glmer should now better handle categorical variables and their labels, including using error bars insted of regions for confidence intervals.
  • table(*, exclude = NULL) was changed to table(*, useNA = "always"), because of planned changes in upcoming R version 3.4.
  • get_option("p_zero") was removed, and sjt.lm, sjt.glm, sjt.lmer and sjt.glmer get a p.zero argument.
  • sjp.setTheme no longer sets default theme presets for plots; use set_theme instead.

Bug fixes

  • A bug introduced in update 2.0.2 caused an error in sjp.lm for type = "std".
  • Effect plots (type = "eff") for sjp.lm, sjp.glm, sjp.lmer and sjp.glmer did not plot all predictors, when predictor name was not exactly specified in formula, but transformed inside formula (e.g. log(pred + 1)).