NEWS
animint2 2026.4.28
geom(showSelected=character()) means to opt-out of interactive legends. Thanks @ANAMASGARD.
animint2 2026.3.8
geom_dotplot() has been removed. Use geom_point() instead for interactive visualizations. (Fixed #289)
animint2 2025.12.4
update_axes: Fix issue #276 where transition duration was hardcoded to 1000ms. Now it respects the selector's duration.
- Download status table now shows
files, disk, and rows columns in "downloaded / total" format. Row counts display with comma separators for readability. Disk sizes show KiB or MiB units (using binary 1024 divisor, consistent with man du). Chunk sizes are calculated in R using file.size() and exported via plot.json.
animint2 2025.12.3
- URL hash handling: Removed old
window.location.hash parsing code from animint.js (issue #280).
animint2 2025.12.2
update_axes: Fixed issue #281 where plots did not render in Rmd.
animint2 2025.11.17
update_axes: Fixed issue #273 where axis tick text font-size was inconsistent between plots with and without update_axes. Previously, plots using theme_animint(update_axes="x") would lose theme(axis.text = element_text(size=...)) styling after axis updates.
animint2 2025.10.31
geom_point() now warns when shape parameter is set to a value other than 21, since animint2 web rendering only supports shape=21 for proper display of both color and fill aesthetics.
animint2 2025.10.27
geom_point() default shape changed from 19 to 21 to enable both color and fill aesthetics for more consistent static rendering.
animint2 2025.10.23
- When using named clickSelects or showSelected, selectize menus no longer display too many values.
animint2 2025.10.22
geom_text(vjust!=0) warning mentions vjust support in geom_label_aligned().
animint2 2025.10.17 (2025-10-22)
getCommonChunk() uses default group=1 (previously 1:N which was slower).
getCommonChunk() works for geom_point() and other geoms which do not use aes(group) for display (previously common data was only returned for geoms path/polygon/ribbon).
getCommonChunk() returns common data if there is only one common variable, as long as it has at least one group with more than one row (previously at least two common variables were required).
animint2 2025.10.10
animint2dir() no longer has css.file argument which was never tested. Style customizations should be done using theme().
animint2 2025.10.9
- Improve common chunk detection, output
na_group and row_in_group when there are missing values.
animint2 2025.10.6
- Added validation for selector names to prevent browser rendering failures. Selector names (from data values used in
clickSelects and showSelected) cannot contain CSS special characters like #, @, !, $, etc., as these interfere with JavaScript DOM selectors and cause blank visualizations in the browser. The compiler now stops with a clear error message identifying problematic selector names, helping users fix data issues before attempting to render.
animint2 2025.10.3
guide_legend(override.aes) works in a plot with both color and fill legends.
animint2 2025.9.30
getCommonChunk() has new atime performance test.
animint2 2025.9.27
- Remove
checkCommon() internal function, which was too slow for computing common chunk tsv file, when there were a large number of groups. Now using data table by group, which is faster and prints progress.
animint2 2025.9.26
animint2pages() arguments chromote_* move to animint2dir() so that we can create Capture.PNG in the context of knit_print.animint(), for pdf output.
animint2 2025.9.16 (2025-09-22)
animint2pages() gains arguments chromote_width and chromote_height, both dimensions in pixels of browser window used to create Capture.PNG, new defaults 3000x2000 should be large enough to handle most typical data viz (previous default width was not on Ubuntu).
update_gallery() uses method="curl" when downloading Capture.PNG (this fixes previous default method which resulted in PNG with errors).
animint2 2025.9.12
- Tooltip is hidden after clicking to de-select.
animint2 2025.9.11
- Bugfix when
meke_tallrect() is last geom, now selection menu renders. Thanks @suhaani-agarwal for the PR.
animint2 2025.9.10
geom_label_aligned() and aes(tooltip) now work in Rmd docs rendered to HTML.
animint2 2025.9.9
- Multiple ggplots may now be arranged on the page via
theme_animint() options colspan=2, rowspan=2, last_in_row=TRUE (meaning next ggplot occurs in next row). Backwards-compatible since old arrangement code is used when none of these options is present. Thanks to @biplab-sutradhar for contributions to the PR.
animint2 2025.9.6
aes(tooltip): Fixed an issue where tooltips containing newline characters (e.g. "two\nlines") caused rendering failures when combined with other aesthetics such as aes(color=...). The problem was due to TSV export with quote=FALSE, which broke parsing when fields contained newlines. The TSV writer now uses quote="auto", ensuring fields with \n are preserved correctly. On the rendering side, newline characters in tooltips are converted to <br/>, so multi-line tooltips are now properly supported. Thanks @suhaani-agarwal for the PR.
animint2 2025.8.16
geom_abline(): Fixed an issue where lines extended beyond plot boundaries when update_axes() was called. The clipping logic has now been moved from pre_process() on the R side to the renderer side, ensuring that <line> elements are correctly clipped to the plot boundaries during update_axes(). Thanks @suhaani-agarwal for the PR.
animint2 2025.7.21
- Added
geom_label_aligned(), a new geom that plots text labels with non-overlapping positioning along a specified alignment axis ("horizontal" or "vertical"). It uses quadratic programming to optimize label placement and includes options for spacing (min_distance), alignment, rounded background rectangles (label_r), disabling the background rectangle (background_rect = FALSE), etc. Thanks @suhaani-agarwal for the PR.
animint2 2025.7.18
animint2pages() default branch is gh-pages instead of main.
update_gallery() creates repos/* directories and removes errors.csv file if necessary.
animint2 2025.7.10
animint2 2025.6.28
animint2 2025.6.4
aes(tooltip = "...") now renders fast, lightweight tooltips using D3. Thanks @suhaani-agarwal for the PR.
animint2 2025.1.28 (2025-01-28)
PR#185
- Tour highlights the geom in the correct plot (instead of always the first viz on the page).
PR#186
geom_abline(): fix and vectorize pre_process() method.
PR#184
- Add simple Hello world example to ?animint.
- Increase text size of "a" in legend SVG.
animint2 2025.1.25
- Tour text includes selector names for geoms with named clickSelects/showSelected.
animint2pages(chromote_sleep_seconds=NULL) is the new default (no screenshot).
- knit_print.animint supports Start Tour button.
animint2 2025.1.24
- New Start Tour widget at the bottom of each data viz, which highlights what interactions are possible with each geom. Use
geom_*(title="title for geom in tour", help="details about what this geom is supposed to represent) to change what is displayed for each geom during the tour. Powered by https://driverjs.com/
animint2 2025.1.21 (2025-01-21)
animint(video="https://some.url") renders the link at the bottom
of the data viz.
update_gallery() uses download.file() instead of git clone (faster).
animint2 2024.11.27
- When scale_log10 changes -Inf to NA, Inf handling logic now works
(previous was error, user should still fix their code to change -Inf
to 0).
animint2 2024.11.11
- if(require(maps)) in test-compiler-animation.R.
animint2 2024.11.2 (2024-11-05)
- Added [gtable] to \link{gtable} to fix new CRAN issue (\link{} targets missing package anchors).
animint2 2024.10.10
- Updated
animist.js to use classes for source links, resolving issue #145.
animint2 2024.9.18
- Added functionality to capture screenshot in animint2pages
animint2 2024.9.17
- @export for internal S3 methods, to quiet roxygen2::document() messages.
animint2 2024.8.29
- animint2pages initial commit README.md uses viz title.
- animint2pages gains owner argument, with default taken from
gh::gh_whoami (same as before, always returns user, even when token has permissions on an org); this allows user to specify an org where the user/token has write permissions. This is used in a new test-compiler-ghpages.R, which now assumes PAT_GITHUB has Administration and Contents permissions for all repos in animint-test org, so our test code can delete the animint2pages_test_repo, create a new one, and then use animint2pages twice, to test the results of creation/update.
animint2 2024.8.27
- Remove selenium, combine renderer tests into single CI job.
animint2 2024.6.6
- Add chromote as headless browser for testing and remove phantomjs/firefox support
animint2 2024.3.12
- Add validation checks for duplicate args passed geom and aes
animint2 2024.2.4
- Add validation checks for duplicate and missing args passed to animint.
animint2 2024.1.24 (2024-01-24)
- move servr from Suggests to Imports, for more user-friendly installation / getting started for newbies (no need for separate install command for servr).
- bugfix in compiler height_proportion computation, which occured in ggplots with space=free and both vertical/horizontal panels. Before the vertical panels were always the same size, now they can be different sizes.
animint2 2023.11.21 (2023-11-21)
- setDTthreads(1) in CRAN testthat.R (created from build.sh).
- use servr by default when open.browser=TRUE.
animint2 2023.11.16
- Before creating a new out.dir, do not remove old out.dir, and
instead stop with an error, if out.dir already exists, but
animint.js does not.
animint2 2023.11.15
- New function
animint2pages(viz,"new_github_repo") for
publishing/sharing animints, replacement for animint2gist, which
stopped working recently.
- New option
animint(source="http://path.to/source.R") which should
be the URL of data viz source code, used to display a link below the
rendered viz.
- New function
update_gallery("path/to/gallery_repo") for updating
galleries such as https://animint.github.io/gallery/
- Bugfix: geom_text renders color as svg fill style (was rendering as
stroke style, a regression introduced by the initial implementation
of
fill_off).
- re-organization of animint.js in order to reduce duplication /
emphasize similarities and differences between geoms.
- geom rect and tile now default to color="black" instead of
transparent, for consistency with other geoms (and for the case of
using clickSelects, which defaults to black color for selected, and
transparent for not). To get the old behavior, specify
color="transparent" (for non-clickSelects).
animint2 2023.10.6
- User-configurable selection style - fill_off.
animint2 2023.6.11 (2023-06-14)
- Remove maptools dependency.
- split.x -> split_recursive to silence new CRAN check.
- setDTthreads(1) in examples for CRAN.
animint2 2023.3.14 (2023-03-14)
- Changes to satisfy CRAN (import is, consistent function args, graphical-units.Rd, rm Fox book URL in stat_ellipse.Rd).
- facet and plot title text size configurable via theme(strip.text, axis.text).
animint2 2022.9.14 (2022-09-15)
- Include Yufan Fei as contributor in DESCRIPTION.
- Allow configurable legend/axis text size via theme.
animint2 2022.8.31
- User-configurable selection styles, alpha_off and colour_off.
animint2 2022.8.25
- import data.table, for faster compilation.
animint2 2022.5.25
- Add ability to rotate geom_text labels, following ggplot2's semantics of rotation direction.
animint2 2022.5.24
- Fixed small test regression and set up Github Actions. Neither of these is user facing.
animint2 2022.2.2
- Default x/y axis text size increased to 16px from 11px in animint.js.
- Suggest RColorBrewer to avoid CRAN NOTE "Undeclared package RColorBrewer in Rd xrefs".
animint2 2022.1.25 (2022-01-26)
- Remove geom/stat_boxplot/quantile due to errors from CRAN check.
animint2 2020.9.18 (2020-10-20)
- update moved mcmaster URL in docs.
animint2 2020.8.19
- Move geom-specific code from saveLayer/if-else to Geom$export_animint and pre_process methods in Geom sub-classes.
animint2 2020.7.9
- Using RSelenium 1.7.4.
- Removed Defunct and Redundant code/examples.
- User can test using docker to avoid incompatibility issues.
- imports knitr as knit_print imported in namespace.
- Use new grid::unitType() to determine unit type of margin in pt/points to line conversion.
animint2 2020.3.2
- data.frame(stringsAsFactors=TRUE) in tests.
animint2 2019.7.12
- Added three authors which are mentioned in Rd/R files.
animint2 2019.7.3 (2019-07-18)
- ggsave(file.path(tempdir(), f)) in examples.
animint2 2019.7.2
- animint2dir writes to temp dir rather than user dir during examples/tests.
animint2 2019.6.4
- bugfix for facet_grid(scales/space="free")
- bugfix for update_axes with geom_abline
- bugfix for graph height computation, which only showed up when there were lots of rows in the facet spec.
animint2 2018.12.14
- animint fun, export print method.
- infinite values converted to range min/max before saving tsv files.
animint2 2018.10.4
- DEP: no longer depend on any branch of ggplot2.
- train_layout from ggplot2 - R/panel.r function is now g_train_layout. train_layout from animint2 - R/z_facet.R function is the same. Both are internal functions.
animint2 2017.08.24
- DSL: clickSelects/showSelected are now specified as parameters rather than aesthetics.