Changelog
Source:NEWS.md
ggalluvial 0.12.5
CRAN release: 2023-02-22
This patch fixes a bug involving the {dplyr} functions first() and last() that was shifted but not fixed in 0.12.4. Rather than being imported during build, they are accessed internally and thus imported during use. See issues #107 https://github.com/corybrunson/ggalluvial/issues/107 and #108 https://github.com/corybrunson/ggalluvial/issues/108 on GitHub for details.
ggalluvial 0.12.4
CRAN release: 2023-02-03
linewidth aesthetic (breaking change)
An upcoming release of ggplot2 controls stroke width using the new linewidth aesthetic rather than size. This release adapts to this change internally by updating row and column layers as recommended here: https://www.tidyverse.org/blog/2022/08/ggplot2-3-4-0-size-to-linewidth/
Curve constructors
Various curve constructors for alluvia and flows are consolidated into data_to_alluvium() and positions_to_flow(), which are now exported to the user as well as used internally by GeomAlluvium$draw_group and GeomFlow$draw_panel, respectively.
Error handling
Rather than throw an error when y values are NA, the stat layers now follow ggplot2 convention, using remove_missing() at the setup step with the na.rm parameter passed to each layer.
Aesthetic defaults
To address #78 and for clarity, the legacy default colour = 0 of three Geom*()s is changed to colour = "transparent".
Skipping examples
\dontrun markers have been replace by \donttest, per the advice here: https://stackoverflow.com/a/68936484/4556798. More have been added in order to reduce the time required to run.
Vignette revisions
The primary vignette now uses the HairEyeColor data set, rather than over-using Titanic, to illustrate the parallel sets plot.
The Shiny vignette includes an embedded app using IFrame.
Dependency upgrades
The deprecated .dots argument of dplyr::group_by() has been replaced with dplyr::across(), preventing a warning.
ggalluvial 0.12.3
CRAN release: 2020-12-05
Shiny vignette
A new vignette by Quentin D. Read shows how to build interactive Shiny apps with tooltips sensitive to the locations of graphical elements. This is especially important for the spline boundaries of flows and alluvia.
Examples using vaccinations data
Corrections have been made to erroneous legacy code, found in one example and two vignettes, to reorder the factor levels of the "response" field in the data set vaccinations. The documentation is updated accordingly.
Also, an explanation of the (misleading) column names of this data set has been added to the main vignette.
ggalluvial 0.12.2
CRAN release: 2020-08-30
This patch addresses a bug introduced in v0.12.0 that had is_lodes_form() return an error when a data frame contains duplicate id-axis pairings, which may be appropriate for producing faceted plots. The new site parameter can be passed one or more grouping variables for this purpose, and internally it is passed "PANEL" to prevent this error from being thrown.
ggalluvial 0.12.1
CRAN release: 2020-08-10
This patch corrects a bug introduced in v0.12.0 that dropped missing values used internally by StatFlow$compute_panel() to keep track of flowless lodes. The problem was illustrated in issue #64.
ggalluvial 0.12.0
CRAN release: 2020-07-14
Data sets
Both installed data sets, vaccinations and majors, are better documented.
The a field of vaccinations (the within-survey fraction of respondents, which can be computed from the other fields) has been removed, and the start_date and end_date fields (Dates, obtained from the ALP website) have been added.
Warning and error messages
The following changes broke no examples or tests but could change behavior in rare cases:
-
is_lodes_form()now returnsFALSEif any axis-alluvium pairs are duplicated, and throws the previous warning as a message. This should be more helpful than the previous behavior of suppressing the warning and leavingtidyr::gather()to throw an error referring to rows of the already-transformed internal data. - Default aesthetic specifications
stratum = NULLandalluvium = NULLhave been added to the stats. This prevents the “unknown aesthetics” warnings that print when these aesthetics are passed to layers rather than to the plot initialization.
Ordering of lodes/alluvia
Behavior of lode.ordering
For consistency with the behavior of aes.bind, stat_alluvium() now invokes lode.ordering together with lode.guidance: If the vectors of lode.ordering include duplicates, i.e. they do not completely determine an order, then the remaining deposits are used to refine the order. Previously, lode.ordering was assumed to consist of permutation vectors, so the two parameters were mutually exclusive.
Additionally, for consistency with other influences on the lode order, the vectors of lode.ordering are reversed if reverse = TRUE (the default). This will change some plots but will not produce new errors.
Controlling lode order before guidance and aesthetics
The lode.ordering parameter of stat_alluvium() has been deprecated. Instead, the new order aesthetic gives priority to its argument over the differentiation aesthetics in arranging the lodes within each stratum, without producing graphical artifacts. This aesthetic can also be used in stat_flow().
Order of alluvia in negative strata
Alluvia within “deposits” are now consistently ordered in positive and negative strata, rather than according to absolute. This avoids the “twisting” of flows between strata of different signs. Whereas the orderings of the deposits matter to the stacked-histogram reading of the plot, the orderings of the alluvia should simply maximize its elegance and readability. This will change some plots but will not produce new errors.
Computed variables
The alluvial stats now compute four variables for use with after_stat(): numeric variables n, count, and prop; and character variables lode (when the alluvium aesthetic is specified) and flow (when using the flow stat). The numerical variables can be weighted using the weight aesthetic, which is dropped during computation (so that it does not confuse the geoms), while lode is distilled according to a new distill parameter. This use of weight may cause confusion with its use by the is_*_form() functions until they are upgraded in the next version.
These new variables complement the already-computed but heretofore undocumented variables stratum and deposit. stratum obviates the need for the infer.label parameter, which is deprecated. Its alias, label.strata, is now defunct. (The variable alluvium is often computed, but it is manipulated to be used by the geom layers and should not be passed to an aesthetic.) deposit takes contiguous integer values forward along the axes and upward along the (signed) strata at each axis.
Flow upgrades and extensions
The knot.pos parameter of geom_alluvium() and geom_flow() is now interpreted as a proportion of the total length of each flow, i.e. of the gap between adjacent strata (not axes). This means that values will vary with axis positions and stratum widths. Setting the new knot.prop parameter to FALSE prevents this by interpreting knot.pos as a constant value in the x direction.
These flows are rendered using grid::xsplineGrob() with four control points each: the endpoints and the two knots. To complement them, several other curves are now available: linear (equivalent to knot.pos = 0), cubic, quintic, sinusoidal, arctangent, and sigmoid, summoned by the new curve_type parameter (which defaults to the x-spline). (The asymptotic functions, arctangent and sigmoid, are compressed according to the new curve_range parameter.) The new curves are rendered piecewise linearly, with resolution controlled by the new segments parameter (similar to ggplot2::stat_ellipse()).
ggalluvial 0.11.2
The function self_adjoin() is debugged for use with a continuous-valued x variable. An example, taking x to be the date of each vaccination survey in vaccinations, is documented with stat_stratum().
ggalluvial 0.11.1
CRAN release: 2019-12-03
This patch fixes a bug with including negative observations in alluvia-form data due to outdated code that prohibited negative y values. This was discovered while drafting two examples of this usage, which are included in the documentation.
ggalluvial 0.11.0
Parameter renamings, deprecations, and additions
- The
min.heightandmax.heightparameters ofstat_stratum()are deprecated in favor ofmin.yandmax.y(which better adhere to ggplot2 conventions) and extended to the otherstat_*()layers. - The
label.strataparameter ofstat_stratum()is deprecated in favor ofinfer.label, which is extended to the otherstat_*()layers and setslabeltoalluviumin those cases rather than tostratum. - The
aggregate.yparameter ofstat_alluvium()is deprecated in favor ofcement.alluvia, and the underlying procedure is debugged. - The
aes.bindparameter ofstat_flow()andstat_alluvium()now prefers character string options to logical values, described in the lode ordering vignette:"none","flows", and"alluvia". The default"none"produces different behavior than the previous defaultFALSE, in that under this setting the aesthetic variables are not at all prioritized. - The previously defunct stat parameters
weightandaggregate.wtsare discontinued.
Negative observations
Negative values can now be meaningfully passed to y, producing behavior that mimics that of geom_bar(). The new logical parameter absolute controls whether negative strata, and lodes within them, are ordered vertically in the same way as positive strata and lodes (FALSE) or in the opposite way (TRUE). Additionally, the negate.strata parameter can be used to negate the observations associated with specific strata, in order to situate them below rather than above the x axis.
New lode guidance function
The new lode guidance function lode_zagzig() mimics the behavior of lode_zigzag() except in initially “zagging” toward the farther end rather than “zigging” toward the closer end.
ggalluvial 0.10.0
CRAN release: 2019-09-02
Lode guidance and ordering
The lode guidance functions have been renamed as follows and their original names retained as aliases:
| original | renamed |
|---|---|
| rightward | forward |
| leftward | backward |
| rightleft | frontback |
| leftright | backfront |
Additionally, lode.ordering now accepts a single integer vector of length the number of cases (alluvia), and will use the vector to sort the lodes within strata at each axis.
Finally, a new vignette showcases this and related functionality using a small example.
Defunct parameters
The following parameters, deprecated in previous versions, are now defunct (with informative messages):
-
weightin thestat_*()s (replaced withy) -
aggregate.wtsinstat_alluvium()(replaced withaggregate.y) -
logicalin theis_*_form()s
ggalluvial 0.9.2
Height limits on strata
Parameters min.height and max.height are introduced to stat_stratum() to allow users to omit strata outside a given height range. This is probably most relevant for stratum labeling, as illustrated in the updated vignette.
ggalluvial 0.9.1
CRAN release: 2018-10-21
Suggest sessioninfo for session_info()
Because the only functional (e.g. out README.md) occurrence of devtools is to call session_info() at the ends of the vignettes, this suggestion and usage are switched to sessioninfo.
ggalluvial 0.9.0
CRAN release: 2018-07-06
geom_alluvium() patch
An occurrence of weight in geom_alluvium() was not updated for v0.8.0 and caused geom_alluvium() to throw an error in some cases. This has been corrected.
geom_flow() patch
An earlier solution to the z-ordering problem sufficed for matched layers (*_alluvium() and *_flow()) but failed for the combination of stat_alluvium() with geom_flow(). This is been corrected in the code for GeomFlow$draw_panel(), though a more elegant and general solution is preferred.
Deprecated parameters removed
The deprecated parameters axis_width (all geom layers) and ribbon_bend (geom_alluvium() and geom_flow()) are removed and an explanatory note added to the layers’ documentation.
Vignette on labeling small strata
A vignette illustrating two methods for labeling small strata, using other ggplot2 extensions, is included.
self_adjoin() export
The internal function self_adjoin(), invoked by geom_flow(), is revised, exported, documented, and exemplified.
ggalluvial 0.8.0
Stat layer functionality
- The
weightaesthetic for the threestat_*()functions is replaced by theyaesthetic, so thatscale_y_continuous()will correctly transform the vertical scales of the layers. An example is provided in the documentation forstat_alluvium(). Theyaesthetic must be present in order for scales to be correctly transformed. Theweightparameter is still available but deprecated. - For consistency with the switch from
weighttoy, theaggregate.wtsparameter tostat_alluvium()is replaced withaggregate.y;aggregate.wtsis deprecated.
ggalluvial 0.7.0
Alluvial data functionality
These changes make the functions that test for and convert between alluvial formats behave more like popular functions in the tidyverse. Some of the changes introduce backward incompatibilities, but most result in deprecation warnings.
- The functions
is_alluvial_*()andto_*()are renamed tois_*_form()andto_*_form()for consistency. Their old names are deprecated. -
is_alluvial()is deprecated and will be removed in a future version. - The parameter
logicalis deprecated. In a future version, the functionsis_*_form()will only return logical values. - The setting
silent = TRUEnow silences all messages. - The functions
is_*_form()now returnFALSEif any weights are negative, with a message to this effect. - These functions now accept unquoted variable names for the
key,value,id,weight, anddiffuseparameters, using up-to-date rlang and tidyselect functionality. - The
axesparameter inis_alluvia_form()andto_lodes_form()now acceptsdplyr::vars()objects, as indplyr::select_at(). Alternatively, variables can be fed to these functions as indplyr::select(), to be collected byrlang::quos(...)and used as axis variables. Ifaxesis notNULL, then such additional arguments are ignored. - The functions
to_*_form()now merge their internal reshapen data frames with the distilled or diffused variables in a consistent order, placing the distilled or diffused variables to the left.
ggalluvial 0.6.0
CRAN release: 2018-02-04
CRAN checks for v0.5.0
- The package now
Dependson Rv3.3.0(patch number zero) instead ofv3.3.1. I’ve been unable to install this version locally, so there is a slight chance of incompatibility that i’ll be watchful for going forward. - The grid and alluvial packages are now
Suggestsrather thanImports.
Alluvial data functionality
- Source files and documentation for
is_alluvial_*()andto_*()functions are combined; seehelp("alluvial-data"). -
is_alluvial_alluvianow prints a message rather than a warning when some combinations of strata are not linked by any alluvia. -
to_lodes()now has adiffuseparameter to join any original variables to the reformatted data by theidvariable (alluvium). This makes it possible to assign original variables to aesthetics after reformatting, as illustrated in a new example. -
to_alluvia()now has adistillparameter to control the inclusion of any original variables that vary within values ofidinto the reformatted data, based on a distilling function that returns a single value from a vector. -
to_lodes()now has a logicaldiscernparameter that usesmake.unique()to make stratum values that appear at different axes distinct. Thestat_*()functions can pass the same parameter internally and print a warning if the data is already in lodes form.
Layer internals
-
GeomFlow$draw_panel()now begins by restricting tocomplete.cases(), corresponding to flows with both starting and terminating axes. (This is not done inStatFlow$compute_panel(), which would have the effect of excluding missing aesthetic values from legends.) -
GeomAlluvium$setup_data()now throws a warning if some color or differentiation aesthetics vary within alluvia. - A bug in the processing of a custom
lode.orderingargument byStatAlluvium$compute_panel()has been fixed.
ggalluvial 0.5.0
CRAN release: 2017-11-26
Backward incompatibilities
The ggalluvial() shortcut function, which included a formula interface, deprecated in version 0.4.0, is removed.