diff --git a/.github/workflows/revdep.yaml b/.github/workflows/revdep.yaml index eb2ff7c2..e0475ef5 100644 --- a/.github/workflows/revdep.yaml +++ b/.github/workflows/revdep.yaml @@ -25,6 +25,11 @@ jobs: - uses: actions/checkout@v6 + # setup-r puts Rscript on PATH; the set-matrix step below runs via + # `shell: Rscript`, which otherwise fails with "Rscript: command not found" + # on the bare runner. + - uses: r-lib/actions/setup-r@v2 + - id: set-matrix run: | package <- read.dcf("DESCRIPTION")[, "Package"][[1]] diff --git a/CRAN-SUBMISSION b/CRAN-SUBMISSION index f4906211..5d787bd8 100644 --- a/CRAN-SUBMISSION +++ b/CRAN-SUBMISSION @@ -1,3 +1,3 @@ -Version: 0.6.1 -Date: 2026-03-27 04:50:35 UTC -SHA: 65b5237fbbb6e59fab417f73b35232d62fe2b82b +Version: 0.7.0 +Date: 2026-07-03 02:03:54 UTC +SHA: 421110cd2d7a1d282ec6d81f195a50de4d2ce752 diff --git a/DESCRIPTION b/DESCRIPTION index 89819c42..479429df 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,8 +1,8 @@ Package: tinyplot Type: Package Title: Lightweight Extension of the Base R Graphics System -Version: 0.6.1.99 -Date: 2026-03-28 +Version: 0.7.0 +Date: 2026-07-02 Authors@R: c( person( diff --git a/NEWS.md b/NEWS.md index 93c7bd59..e58bfaa4 100644 --- a/NEWS.md +++ b/NEWS.md @@ -4,11 +4,15 @@ _If you are viewing this file on CRAN, please check the [latest NEWS](https://grantmcdermott.com/tinyplot/NEWS.html) on our website where the formatting is also better._ -## Development +## v0.7.0 + +**tinyplot** v0.7.0 is a big release with many new features, including major +updates to our theming logic and aesthetic stylings. Related updates are grouped +below for easier navigation. ### Aesthetic changes -The main focus of v0.7.0 is bringing various aesthetic improvements to +A major focus of v0.7.0 is bringing various aesthetic improvements to **tinyplot**. These aesthetic improvements should carry over to all of your (tiny)plots automatically and do not require any changes to user-facing inputs or the core API. From that perspective they are not a breaking change, even @@ -22,7 +26,7 @@ visualizations: side-positioned legends like `"right!"` and `"left!"`. This is a minor visual change from the previous default of centered legends, which we inherited from base R. However, users can still override this behaviour with the new `ljust` - parameter, which accepts values of `"l(eft)"` (new default) or `"c(enter")` + parameter, which accepts values of `"l(eft)"` (new default) or `"c(enter)"` (old default). (#500 @grantmcdermott) - Example: Override globally by setting `tpar(ljust = "c")`, or revert for a single plot by passing the parameter as part of the legend list arguments, @@ -34,9 +38,9 @@ visualizations: - Note: The plot (facet) RHS margin is automatically expanded to prevent text clipping of these direct legend labels. However, the labels themselves may still overlap. Users can prevent this by passing helper arguments to the - legend contructor: either `repel` (for automatic vertical separation) or + legend constructor: either `repel` (for automatic vertical separation) or `nudge_x`/`nudge_y` (for manual per-group offsets). For example, - `plt(..., legend = list("direct", repel = TRUE))`. + `plt(..., legend = list("direct", repel = TRUE))`. #### Theme aesthetics @@ -56,19 +60,19 @@ New theme features: - Similarly, `tinytheme()` also accepts `gap.main` and `gap.sub` primitives for controlling the spacing between titles and the plot region. (#595 @grantmcdermott) -- Existing theme refinements and improvments. (#595, #603 @grantmcdermott). +- Existing theme refinements and improvements. (#595, #603 @grantmcdermott). - `"tufte"` and `"void"` are now dynamic (responsive margins). - All of the `ggplot2`-inspired themes (`"bw"`, `"classic"`, etc.) now use smaller axis text and tighter spacing to better match their upstream `ggplot2` counterparts. - - `"ipsum"` has been similarly overhauled to match the upsteam theme (bold + - `"ipsum"` has been similarly overhauled to match the upstream theme (bold title, no ticks, fine grid, custom palette). Our original `tinyplot` variant is preserved as `"ipsum2"` for those who still want to use it. - `"dark"` now uses a better default `ribbon.alpha` for better contrast against the black background. - Added several new themes. (#595, #606 @grantmcdermott) - `"dynamic"` (new foundation for all other dynamic themes) - - `"broadsheet"` (data journalism style _a la_ _The Economist_ or _NY Times_) + - `"broadsheet"` (data journalism style _à la_ _The Economist_ or _NY Times_) - `"float"` (floating axes; a variant of `"tufte"`) - `"linedraw"` (based on the `ggplot2` theme) - `"nber"` (NBER working paper style) @@ -139,7 +143,7 @@ Theme fixes: - Left-justified `main` and `sub` titles now correctly anchor to the y-axis line, even when long horizontal tick labels widen the left margin. (#479) - Similarly, center-justified axis titles are now anchored on the relevant - axis alone, rather than the full plot region. (#573) + axis alone, rather than the full plot region. (#573) - `cex.xlab` and `cex.ylab` now correctly control axis title size. The more general `cex.lab` is still respected as a fallback. (#574) - Margin spacing now correctly adjusts for math expressions, including @@ -219,7 +223,7 @@ Theme fixes: separation from `sub` is guaranteed). Appearance is customizable via `tpar()` parameters: `adj.cap`, `cex.cap`, `col.cap`, `font.cap`, and `line.cap`. (#592 @grantmcdermott) - - `weights = ` for adding weights to statisical transformations. + - `weights = ` for adding weights to statistical transformations. Supported types are models (`type_lm()`, `type_glm()`, `type_loess()`) and distributions (`type_density()`, `type_histogram()`, `type_spineplot()`). A warning is emitted if `weights` is passed to an unsupported type and the @@ -276,14 +280,14 @@ Theme fixes: - If the offset is a character or named numeric vector, it instead "sets aside" the named level(s) of the `by` group, pulling them out of the stack and drawing them as standalone bars. This is useful for Likert plots, - where you want to show a neutral categories (e.g., "Unsure") apart from + where you want to show a neutral category (e.g., "Unsure") apart from the diverging stack. Thanks to @strengejacke for the suggestion. - `type_text()` gains two new arguments: - a `labeller` argument that is passed to `tinylabel()` for formatting the text labels. (#620 @grantmcdermott) - a `repel` argument that automatically nudges overlapping text labels - apart. One limitation is that the repulsion logic operates with groups. So - there may still be some overlapping text for for grouped data. + apart. One limitation is that the repulsion logic operates within groups. + So there may still be some overlapping text for grouped data. (#621 @grantmcdermott) - Model-fit and various distribution types gain a `weights` argument; although this is best provided from the top-level `tinyplot()`/`plt()` call. See @@ -301,12 +305,13 @@ Theme fixes: margin adjustment now computes tick labels per-facet and sizes the margin to accommodate the widest labels. (#579 @grantmcdermott) - Fixed several minor issues related to facet title strips and spacing: Strips - and spacing now scale correctly with `facet.cex`, multiline facet titles - inter-panel gaps remain fixed regardless of strip height, and strip text is - now vertically centered within the background rect. (#586 @grantmcdermott) + and spacing now scale correctly with `facet.cex`; inter-panel gaps for + multiline facet titles remain fixed regardless of strip height; and strip + text is now vertically centered within the background rect. + (#586 @grantmcdermott) - Fixed Issue #593 where `palette.qualitative` in themes could not be a function. Thanks to @katrinabrock for the report. (#594 @zeileis) - - Polygon density hatching lines now correctly use the group colour instead of +- Polygon density hatching lines now correctly use the group colour instead of black. Affects `type_polygon`, `type_chull`, and `type_ellipse` when `density` is set. (#610 @grantmcdermott) - Fixed inconsistent decimal places in the `tinylabel()` currency and comma @@ -354,14 +359,14 @@ Theme fixes: (factor) produces a barplot, `~ x` (factor) produces a barplot, and `~ x` (numeric) produces a scatterplot against the index. The `~ 0` form is useful for types that don't require x/y, such as `segments` and `rect`. Thanks to - @katrinabrock for the suggestion. (#534 @zeileis, @grantmcdermott) + @katrinabrock for the suggestion. (#534 @zeileis @grantmcdermott) ### Bug fixes - Fixed Issue #545 where xaxs/yaxs were not restored when set by an internal function. (#545 @zeileis) - Fixed Issue #553 where `facet.args = list(free = TRUE)` lead to an error - when used used without facets. Thanks to @katrinabrock for the report. + when used without facets. Thanks to @katrinabrock for the report. (#554 @zeileis) - Fixed `type_ridge()` fill errors for themes that set a qualitative palette, e.g. `"clean2"`. (#564 @grantmcdermott) @@ -588,8 +593,8 @@ Theme fixes: cairo graphics are supported on the user's machine. This should help to ensure better fidelity of (non-standard) fonts in PDFs. (#311 @grantmcdermott) - The `palette` argument now accepts a vector or list of manual colours, e.g. - `tinyplot(..., palette = c("cyan4", "hotpink, "purple4"))`, or - `tinytheme("clean", palette = c("cyan4", "hotpink, "purple4"))` (#325 @grantmcdermott) + `tinyplot(..., palette = c("cyan4", "hotpink", "purple4"))`, or + `tinytheme("clean", palette = c("cyan4", "hotpink", "purple4"))` (#325 @grantmcdermott) - Two new sets of top-level arguments allow for greater axis customization: - `xaxb`/`yaxb` control the manual break points of the axis tick marks. (#400 @grantmcdermott) - `xaxl`/`yaxl` apply a formatting function to change the appearance of the @@ -840,7 +845,7 @@ enable fine-grained control over this behaviour. (#228 @eleuven and - Major internal refactor of the type drawing and data processing. (#222 @vincentarelbundock) - Documentation improvements, e.g. explicit guidance on how to specify multiple -grouping variables (thanks to @strengjacke for reporting #213). +grouping variables (thanks to @strengejacke for reporting #213). - The new functional type processing system also means that each type now has its own help page (e.g. `?type_hist`, `type_ridge`, etc.) @@ -981,7 +986,7 @@ This function replaces some older (non-exported) internal functions that also prove help to end users who are looking for additional ways to restore `par` settings after the fact. See `?get_saved_par` for some examples. (#152 @grantmcdermott) -- `tinyplot`/`plt` gaina a new `alpha = ` convenience argument for +- `tinyplot`/`plt` gains a new `alpha = ` convenience argument for adding transparency to plot elements and colours. Example use: `plt(rnorm(1e3), pch = 19, alpha = 0.3)`. (#129 @grantmcdermott) - Similar to the preceding news item, transparency can be added to (grouped) @@ -1098,7 +1103,7 @@ added in future releases. (#33, #94 @grantmcdermott) Bug fixes: - Y-label correctly prints if a function was used for the atomic plot method, -e.g. `plot2(rnorm(100)`. (#52 etiennebacher) +e.g. `plot2(rnorm(100))`. (#52 etiennebacher) - Ribbon plot types are now automatically ordered by the x variable. (#54 @grantmcdermott) - Interval plots like ribbons, errorbars, and pointranges are now correctly @@ -1176,7 +1181,7 @@ Bug fixes: Internals: - Better formula parsing for `plot2.formula` (#8 by @zeileis). -- Unit testing scaffolding based on **tinysnaphot** (#11 by @vincent). +- Unit testing scaffolding based on **tinysnapshot** (#11 by @vincent). Project: diff --git a/R/type_barplot.R b/R/type_barplot.R index d75d8372..8872cd0e 100644 --- a/R/type_barplot.R +++ b/R/type_barplot.R @@ -106,7 +106,7 @@ #' col = NA, # (optional: turn off border) #' legend = FALSE #' ) -#' tinyplot_add(type = type_vline(4.5), lty = 2) +#' tinyplot_add(type = type_vline(4.5), lty = 2, col = "grey50") #' #' # 2. Diverging/Likert layout: a character (or named numeric) offset "sets #' # aside" the named category, pulling it out of the centered stack and drawing diff --git a/README.qmd b/README.qmd index 0ee63f7e..ed33bc61 100644 --- a/README.qmd +++ b/README.qmd @@ -5,7 +5,7 @@ knitr::opts_chunk$set( fig.path = "man/figures/README-", out.width = "70%", fig.width = 8, - dpi = 100, + dpi = 120, asp = 0.625 ) ``` @@ -162,3 +162,8 @@ tinytheme() Hopefully, these have been enough to pique your interest. Head over to the [intro tutorial](https://grantmcdermott.com/tinyplot/vignettes/introduction.html) for many more examples, including model-based and custom plot types. + +```{r tinyimg} +#| include: false +if (requireNamespace("tinyimg")) tinyimg::tinypng("man/figures") +``` \ No newline at end of file diff --git a/altdoc/pkgdown.yml b/altdoc/pkgdown.yml index bec33e38..3a81a4e3 100644 --- a/altdoc/pkgdown.yml +++ b/altdoc/pkgdown.yml @@ -2,7 +2,7 @@ altdoc: 0.7.2 pandoc: '3.10' pkgdown: 2.1.3 pkgdown_sha: ~ -last_built: 2026-07-02T18:34:34+0000 +last_built: 2026-07-03T00:53:01+0000 urls: reference: https://grantmcdermott.com/tinyplot/man article: https://grantmcdermott.com/tinyplot/vignettes diff --git a/cran-comments.md b/cran-comments.md index e89719f1..494a3b9d 100644 --- a/cran-comments.md +++ b/cran-comments.md @@ -1,6 +1,9 @@ ## Overview -**tinyplot** v0.6.1 is a patch release containing bug fixes. +**tinyplot** v0.7.0 is a feature release. It brings major updates to our theming +logic and aesthetic stylings, several new plot types and `tinyplot.*` methods, +and various other enhancements and bug fixes. See NEWS.md for the full list of +changes. ## Test environments macOS (local) @@ -9,10 +12,16 @@ Win Builder ## R CMD check results -0 errors | 0 warnings | 1 note +0 errors | 0 warnings | 0 notes -Note: New maintainer email address (contact@grantmcdermott.com). This is the same -person, just a different email. +## Reverse dependency checks + +We ran reverse-dependency checks on all 12 CRAN revdeps. All packages that +could be checked showed no status change from the current CRAN version of +tinyplot. One package, 'RTMB', failed to install in our CI environment under +both the old and new versions of tinyplot (identical ERROR, unrelated to this +submission -- RTMB requires a TMB/C++ toolchain build that did not complete in +our runner). P.S. We continue to run a comprehensive test suite comprising hundreds of test snapshots (i.e., SVG images) as part of our CI development workflow. See: diff --git a/man/figures/README-quickstart2-1.png b/man/figures/README-quickstart2-1.png index b3b7d380..c0fea797 100644 Binary files a/man/figures/README-quickstart2-1.png and b/man/figures/README-quickstart2-1.png differ diff --git a/man/figures/README-quickstart3-1.png b/man/figures/README-quickstart3-1.png index a9705c2a..c917e180 100644 Binary files a/man/figures/README-quickstart3-1.png and b/man/figures/README-quickstart3-1.png differ diff --git a/man/figures/README-quickstart4-1.png b/man/figures/README-quickstart4-1.png index 08dbeb9f..da8719d1 100644 Binary files a/man/figures/README-quickstart4-1.png and b/man/figures/README-quickstart4-1.png differ diff --git a/man/figures/README-quickstart5-1.png b/man/figures/README-quickstart5-1.png index bd0a16ac..93881f64 100644 Binary files a/man/figures/README-quickstart5-1.png and b/man/figures/README-quickstart5-1.png differ diff --git a/man/figures/README-quickstart_theme-1.png b/man/figures/README-quickstart_theme-1.png index 8ee746eb..44518b8e 100644 Binary files a/man/figures/README-quickstart_theme-1.png and b/man/figures/README-quickstart_theme-1.png differ diff --git a/man/type_barplot.Rd b/man/type_barplot.Rd index 9867fbe6..41be212c 100644 --- a/man/type_barplot.Rd +++ b/man/type_barplot.Rd @@ -133,7 +133,7 @@ tinyplot( col = NA, # (optional: turn off border) legend = FALSE ) -tinyplot_add(type = type_vline(4.5), lty = 2) +tinyplot_add(type = type_vline(4.5), lty = 2, col = "grey50") # 2. Diverging/Likert layout: a character (or named numeric) offset "sets # aside" the named category, pulling it out of the centered stack and drawing