geom(showSelected.legend=FALSE)is the canonical opt-out for legend-driven auto-injection of showSelected, including while keeping explicit showSelected variables. (Fixed #333)- Breaking API cleanup: PR #292
geom(showSelected=character())no longer opts out; useshowSelected.legend=FALSEinstead.
geom(showSelected=character())opted a layer out of auto-added legend showSelected (superseded byshowSelected.legend=FALSEin PR#336). Thanks @ANAMASGARD.
geom_dotplot()has been removed. Usegeom_point()instead for interactive visualizations. (Fixed #289)
animint.js: Remove redundantSelectors.hasOwnPropertychecks and use a sharedselector_has_duration()helper (issue #278, PR#306).
update_axes: Fix issue #276 where transition duration was hardcoded to 1000ms. Now it respects the selector's duration.
- URL hash handling: Removed old
window.location.hashparsing code fromanimint.js(issue #280).
update_axes: Fixed issue #281 where plots did not render in Rmd.
update_axes: Fixed issue #273 where axis tick text font-size was inconsistent between plots with and withoutupdate_axes. Previously, plots usingtheme_animint(update_axes="x")would losetheme(axis.text = element_text(size=...))styling after axis updates.
- Download status table now shows
files,disk, androwscolumns in "downloaded / total" format. Row counts display with comma separators for readability. Disk sizes show KiB or MiB units (using binary 1024 divisor, consistent withman du). Chunk sizes are calculated in R usingfile.size()and exported via plot.json.
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.
geom_point()default shape changed from 19 to 21 to enable both color and fill aesthetics for more consistent static rendering.
- When using named clickSelects or showSelected, selectize menus no longer display too many values.
geom_text(vjust!=0)warning mentions vjust support ingeom_label_aligned().
getCommonChunk()uses default group=1 (previously 1:N which was slower).getCommonChunk()works forgeom_point()and other geoms which do not useaes(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).
animint2dir()no longer hascss.fileargument which was never tested. Style customizations should be done usingtheme().
- Improve common chunk detection, output
na_groupandrow_in_groupwhen there are missing values.
- Added validation for selector names to prevent browser rendering failures. Selector names (from data values used in
clickSelectsandshowSelected) 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.
guide_legend(override.aes)works in a plot with both color and fill legends.
getCommonChunk()has new atime performance test.
- 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.
animint2pages()argumentschromote_*move toanimint2dir()so that we can createCapture.PNGin the context ofknit_print.animint(), for pdf output.
animint2pages()gains argumentschromote_widthandchromote_height, both dimensions in pixels of browser window used to createCapture.PNG, new defaults 3000x2000 should be large enough to handle most typical data viz (previous default width was not on Ubuntu).update_gallery()usesmethod="curl"when downloadingCapture.PNG(this fixes previous default method which resulted in PNG with errors).
- Tooltip is hidden after clicking to de-select.
- Bugfix when
meke_tallrect()is last geom, now selection menu renders. Thanks @suhaani-agarwal for the PR.
geom_label_aligned()andaes(tooltip)now work in Rmd docs rendered to HTML.
- Multiple ggplots may now be arranged on the page via
theme_animint()optionscolspan=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.
aes(tooltip): Fixed an issue where tooltips containing newline characters (e.g."two\nlines") caused rendering failures when combined with other aesthetics such asaes(color=...). The problem was due to TSV export withquote=FALSE, which broke parsing when fields contained newlines. The TSV writer now usesquote="auto", ensuring fields with\nare 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.
geom_abline(): Fixed an issue where lines extended beyond plot boundaries whenupdate_axes()was called. The clipping logic has now been moved frompre_process()on the R side to the renderer side, ensuring that<line>elements are correctly clipped to the plot boundaries duringupdate_axes(). Thanks @suhaani-agarwal for the PR.
- 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.
animint2pages()default branch is gh-pages instead of main.update_gallery()creates repos/* directories and removes errors.csv file if necessary.
- Added Codecov integration for both R and JavaScript tests; coverage reports now available. Thanks @suhaani-agarwal for the PR.
geom_raster()has been removed. Thanks to @biplab-sutradhar for the PR.
aes(tooltip = "...")now renders fast, lightweight tooltips using D3. Thanks @suhaani-agarwal for the PR.
- Tour highlights the geom in the correct plot (instead of always the first viz on the page).
geom_abline(): fix and vectorizepre_process()method.
- Add simple Hello world example to ?animint.
- Increase text size of "a" in legend SVG.
- 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.
- 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/
animint(video="https://some.url")renders the link at the bottom of the data viz.update_gallery()usesdownload.file()instead of git clone (faster).
- 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).
- if(require(maps)) in test-compiler-animation.R.
- Added [gtable] to \link{gtable} to fix new CRAN issue (\link{} targets missing package anchors).
- Updated
animist.jsto use classes for source links, resolving issue #145.
- Added functionality to capture screenshot in animint2pages
- @export for internal S3 methods, to quiet roxygen2::document() messages.
- 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 assumesPAT_GITHUBhas Administration and Contents permissions for all repos inanimint-testorg, so our test code can delete theanimint2pages_test_repo, create a new one, and then use animint2pages twice, to test the results of creation/update.
- Remove selenium, combine renderer tests into single CI job.
- Add chromote as headless browser for testing and remove phantomjs/firefox support
- Add validation checks for duplicate args passed geom and aes
- Add validation checks for duplicate and missing args passed to animint.
- 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.
- setDTthreads(1) in CRAN testthat.R (created from build.sh).
- use servr by default when open.browser=TRUE.
- 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.
- 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).
- User-configurable selection style - fill_off.
- Remove maptools dependency.
- split.x -> split_recursive to silence new CRAN check.
- setDTthreads(1) in examples for CRAN.
- 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).
- Include Yufan Fei as contributor in DESCRIPTION.
- Allow configurable legend/axis text size via theme.
- User-configurable selection styles, alpha_off and colour_off.
- import data.table, for faster compilation.
- Add ability to rotate geom_text labels, following ggplot2's semantics of rotation direction.
- Fixed small test regression and set up Github Actions. Neither of these is user facing.
- 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".
- Remove geom/stat_boxplot/quantile due to errors from CRAN check.
- update moved mcmaster URL in docs.
- Move geom-specific code from saveLayer/if-else to Geom$export_animint and pre_process methods in Geom sub-classes.
- 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.
- data.frame(stringsAsFactors=TRUE) in tests.
- Added three authors which are mentioned in Rd/R files.
- ggsave(file.path(tempdir(), f)) in examples.
- animint2dir writes to temp dir rather than user dir during examples/tests.
- 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.
- animint fun, export print method.
- infinite values converted to range min/max before saving tsv files.
- 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.
- DSL: clickSelects/showSelected are now specified as parameters rather than aesthetics.