plotor v1.0.0 (2026-02-14)
CRAN release: 2026-02-14
Enhancements
Runtime benchmarking & prediction
Benchmarks measuring plot / table runtime across dataset sizes and predictor mixes, plus a packaged regression model and lightweight wrapperpredict_process_time()that returns an estimated runtime (ms) with uncertainty bounds. Benchmark outputs and the fitted model are stored as .rds assets for package use (#94)Confirm before long runs
double_check_confint_fast_estimate()prompts users before running slower confidence-interval computations when the predictored runtime exceeds the default threshold (60s). Reduces unexpected long operations in interactive sessions (#94)Background processing with spinner
Long-running work now runs in background R processes (callr::r_bg()), while the main process shows a cli spinner. Helpers includeget_summary_table_with_spinner(),check_assumptions_with_spinner(), anduser_spinner(). Spinners are suppressed in tests / CI (#96) (#97)Influential-observation diagnostics
Newassumption_no_extreme_values()detects influential observations using Cook’s distance, leverage and standardised residuals with adaptive thresholds and conservative flagging. Test-data generatorsget_df_influential()andget_lr_influential()added (#98)Reproducible README figures
Scripttools/generate_readme_figures.R, refreshed figures assets inman/figuresand added Suggests dependencies for their reproduction (here,webshot2) so README builds are reproducible (#100)
Changed
Runtime prediction integrated into UI
plot_or()andtable_or()callpredict_process_time()and prompt via the double-check helper when long runs are predicted. Benchmark code moved todata-raw/; serialised assets are shipped for app use (no re-benchmarking at runtime) (#94)Safe background wrappers
Wrapper functions run heavy work in background processes and return identical results while surfacing errors / warnings. Spinner display is controlled byuse_spinner()(#96)Namespace and tidy-eval hardening
Explicit qualifications (utils::stack(),stats::predict()), use of.data$pronoun and improved Roxygen foruse_spinner()reduce R CMD check notes and improve compatibility withdplyrv1.2+.callradded to Imports (#97)Stable transformations
Replacedlog1p()withasinh()for continuous-predictor transforms to handle negative values and improve numerical stability (#98)README rewrite
README content simplified and focused; figures and generation workflow updated for reproducibility (#100)
Fixed
Separation detection
Fixed tidy-eval bugs, zero-count detection, empty-summary guards and NA-to_TRUE/FALSE issues inassumption_no_separation_fast()so separation is reliably detected (#96)Spinner / test stability
Spinners are disabled in non-interactive / test environments; minor test-data tweaks improve CI reliability (#97)Assumption checks robustness
Improved numerical stability, error handling and reporting across assumption checks to avoid spurious results (#96)R CMD check issues
Resolved undefined global variables and unqualified generic calls to clean up check output (#97)
plotor v0.9.0 (2026-01-06) - GitHub release
Enhancements
Support for ordered-factor predictors
Formula parsing and model-summary utilities now recognise and correctly handle ordered factors (#91)New helper
make_ordered_factors_compatible_with_broom()aligns term names and labels withbroom::tidy()(#91)Tests and examples
Tests, example data and models covering ordered-factor predictors, including a truncated example that verifies the sample-size assumption warning (#91)
Changes
Revert to gtExtras for CI mini-plots
Replaced hard-coded copies withgtExtrascode for confidence-interval plots produced bytable_or()and requiregtExtras >= 0.6.1to reduce duplication and use upstream fixes (#90)Bump ggplot2 requirement
Update dependency toggplot2 >= 4.0.0(#90)Refined predictor-type detection
Refactored to return more detailed classes (e.g. “ordered factor”, “factor”, “numeric”) for improved downstream handling and displays (#91)Version bump
Bumped package version to 0.9.0 to support a GitHub release (#93)
Fixed
-
Ordered-factor row counts
Added dedicated row-count logic for ordered-factor levels to ensure correct summarisation and avoid miscounts in summaries and tables (#91)
plotor v0.8.0 (2025-12-04)
CRAN release: 2025-12-08
Enhancements
Univariable Odds Ratios
Added functionality to produce univariable odds ratios alongside multivariate model odds ratios inplot_or()andtable_or(). This allows for direct comparison between predictors in isolation and as part of a full model.
(#59)Assumption Checks Control
Bothplot_or()andtable_or()now include a parameter to enable or disable assumption checks, giving experienced analysts more control over feedback from these functions.
(#75)Check for Linearity
Continuous predictors are now checked for linearity in relation to the log-odds of the outcome, improving model diagnostics.
(#21)Privacy Options
A new option intable_or()allows suppression of low counts (below a user-defined threshold) and rounding of other counts, to help protect sensitive data.
(#58)Contextual Guidance for Model Assumptions
Now, when assumption checks fail inplot_or()ortable_or(), users are prompted to runcheck_or()for detailed diagnostics (unless it has just been used).
(#76)
Bug Fixes
Performance of Confidence Interval Calculation
Improved processing speed of theconfint_fast_estimateparameter for large datasets by optimizing the assumption check functions.
(#57)Sample Size Check with Complete Separation
Resolved errors inassumption_sample_size()when the model exhibits complete separation by better handling ofNAvalues in outcome counts.
(#73)Documentation Correction
Documentation foranonymise_count_values()has been corrected: this internal function is no longer exported in the help files.
(#84)
plotor 0.7.0
CRAN release: 2025-07-01
Compatibility and testing fixes:
-
Test suite (#68)
Addressed issues where snapshot tests failed depending on the installed version of ggplot2. Snapshots produced by different ggplot2 versions were causing test failures, especially with
vdiffr::expect_doppelganger().The temporary solution was to suspend these visual comparison tests to avoid unnecessary failures for users not on the latest ggplot2.
-
Readiness for upcoming {ggplot2} release (#65)
Investigated and resolved failures with the upcoming major release of ggplot2, ensuring that the package’s examples, vignettes, and tests remain compatible.
Enhancements for model diagnostics:
-
New function
check_or()(#62)Added an exported function,
check_or(), to provide users with detailed feedback on whether their logistic regression models meet underlying assumptions. Previously, detailed diagnostics were only accessible via undocumented internal functions. -
Assumptions: check for sample size (#41)
Introduced a check for sufficient sample size, further improving diagnostics for logistic regression models.
These improvements make the package more robust to upstream changes in dependencies and offer users more transparent and accessible model validation tools.
plotor 0.6.0
CRAN release: 2025-05-28
User-focussed changes
-
Summary OR tables (#28)
Introduced summary tables for odds ratios, making it easier to view and interpret results from your model.
-
Faster estimates of confidence intervals (#53)
Optional argument,
confint_fast_estimate, for bothplot_or()andtable_or()that allows for faster approximation of confidence intervals usingstats::confint.default(). This can be helpful for large data sets where confidence intervals can take a long time to calculate for. -
Improved validation of the confidence level (#29)
Enhanced how the package checks user input for confidence levels, reducing the risk of invalid values being used.
This included enhanced checks in the internal function
validate_conf_level_inputs()with enhanced error handling and user feedback (#31). -
Assumption checks
Started a suite of checks that assumptions for logistic regression are upheld. Implemented in this release:
Assumptions: check outcome is binary (#42)
Added logic to confirm the outcome variable is binary, as required for odds ratio calculations.
Assumptions: check for multicollinearity (#43)
Implemented checks to detect multicollinearity among predictors, helping users identify and address issues that could affect model validity.
Assumptions: check for separation (#47)
Added checks for separation in the data, which can cause estimation problems in logistic regression.
-
Updated README
Improved the README documentation, making it easier for users to get started and understand the package.
Developer-focussed changes
-
Test suite (Developer focus) (#33, #37)
Added and developed a suite of tests for ensuring code reliability and maintaining quality as the package evolves.
-
Bug fixes
Addressed and resolved warnings related to the {tidyselect} package, leading to cleaner output and better compatibility with the tidyverse ecosystem. (#34)
Updated the way class descriptions are handled, consolidating them into single strings for consistency and clarity. (#50)
Fixed ordering of terms and levels in
table_or(), so results are presented in a logical and expected sequence. (#54, #56)
For the full details, see the changelog: https://github.com/craig-parylo/plotor/compare/v0.5.2…v0.6.0
plotor 0.5.2
CRAN release: 2025-02-09
plot_or()now respects the order of covariates in the formula when plotting (#15).plot_or()handles missing information to avoid {ggplot2} related warning messages (#11).plot_or()accepts customised confidence limits, e.g. 99%, used when calculating the confidence intervals (#19).plot_or()conducts checks on inputs - ensuring the {glm} model is a logistic regression (family = ‘binomial’ and link = ‘logit’) and validates the confidence limit to be within the range 0.001 to 0.999 (#22, #19).
