Changelog
Source:NEWS.md
qualpalr 1.0.0
CRAN release: 2025-08-18
New or Modified Features
-
qualpal()
now uses the CIEDE2000 metric instead of the DIN99d one by default. Users can still specify the DIN99d metric by passingmetric = "din99d"
toqualpal()
. - The
character
method of thequalpal()
function now accepts a name for a predefined palette, such as"ColorBrewer::Set1"
or"Tableau::10"
, which will use the corresponding palette’s colors as input. Passing one of the old colorspace names now throws a warning and will be removed in the next major release. -
qualpal()
now accepts a background color through thebg
argument, which is considered when generating the palette, but not included in the final palette. - The color difference metric in
qualpal()
can now be specified using themetric
argument, which accepts either"din99d"
(the default),"ciede2000"
, or"cie76"
. Expect slower performance for"ciede2000"
. - The
autopal()
function is now deprecated and will be removed int the next major release. There is no direct replacement. - There’s a new function,
analyze_palette()
, which analyzes a categorical color palette. -
qualpal()
now has aextend
method that allows the user to extend an existing palette by adding more colors to it. This is useful for expanding an existing palette to include more colors. - The color space (
list
) method ofqualpal()
now accepts a specification in the LCHab (HCL) color space, which is a cylindrical representation of the Lab color space. This is mostly added to simplify comparisons with other packages that use LCHab as input. We still recommend using the HSL color space, which is more intuitive for most users. - There’s a new function,
list_palettes()
, which lists all built-in palettes available in the package, which can thus be used in the new character method forqualpal()
. This includes the predefined palettes from ColorBrewer, Tableau, and other sources. - There’s a new function,
get_palette()
, which retrieves a palette by name from the built-in palettes. - The
cvd
argument now accepts a named numeric vector, which allows specifying the severity of color vision deficiency for each type of deficiency. The names are"protan"
,"deuter"
, and"tritan"
. - The
cvd_severity
argument has been deprecated and will be removed in the next major release. Thecvd
argument now handles all cases of color vision deficiency adaptation directly.
Refactoring
- The entire C++ backend for the package has been rewritten and outsourced to a separate C++ library, qualpal.
qualpalr 0.4.2
CRAN release: 2017-08-28
Major changes
- Palettes are no longer generated randomly. qualpalr previously started with a random sample of colors before running the optimization scheme but now instead picks a starting set of linearly spaced colors.
Bug fixes
-
autopal()
erroneously requiredcolorspace
to be a string.
qualpalr 0.4.0
CRAN release: 2017-03-16
Minor changes
-
qualpal()
sorts palettes in order of increasing color distinctness. -
qualpal()
argumentcolorblind
has been made defunct. - Documentation for
qualpal()
has been improved. - Colors are now generated with
randtoolbox::torus()
instead ofrandtoolbox::sobol()
.
qualpalr 0.3.0
CRAN release: 2016-12-20
New features
- Improved algorithm for finding distinct colors. (For details see this.)
- Revamped the color deficiency handling to include almost all cases of color deficiency using the methods described in Machado et al. 2009, now including tritanopia as well as anomalous trichromacies (deuteranomaly, tritanomaly, and protanomaly). This is controlled via the
cvd_severity
argument toqualpal()
that allows the user to set the severity of color deficiency to adapt to –0
for normal vision and1
for dichromatic vision (protanopia, deuteranopia, or tritanopia).
Minor improvements
- Distance and color picking algorithms have been rewritten in C++ using Rcpp, RcppParallel, and RcppArmadillo.
- Phased out the
...
argument toqualpal
. - Lightness range of the predefined rainbow palette increased to [0, 1].
- Changed argument name of
colorblind
tocvd
(for color vision deficiency) since the function now adapts to less severe versions of color deficiency. Usingcolorblind
is deprecated and will throw a warning.
qualpalr 0.2.1
CRAN release: 2016-10-09
New features
- Dropped daltonization since it effectively transposed the color subspace given by the user. qualpalr now instead only transforms the given color subspace to simulate protanopia or deuteranopia and then picks colors. This has the side-effect of decreasing the distinctness of color palettes when
colorblind
is used, but is more consistent with user input.
Bug fixes and minor improvements
- Simulations for tritanopia were dropped since there is no reliable source to explain how sRGB ranges should be converted (as there is for deuteranopia and protanopia in Vienot et al 1999).
- Added tests using data from Vienot et al 1999 to check that color blind simulations work properly.
- Fixed a sampling bug wherein the square root of saturation was taken after scaling to the provided range, which generated different ranges than intended.
- Switched to the sobol quasi-random sequence instead of torus.
qualpalr 0.2.0
New features
- Redesigned the method by which qualpal picks colors. Now initializes a point cloud of colors, projects it to DIN99d space, and picks points greedily.
- Introduced real methods of adapting colors to color blindness by daltonizing color subspaces before picking colors from them.
- The introduction to qualpalr vignette has been expanded with a thorough description of how qualpalr picks colors.
Bug fixes and minor improvements
- Moved from using
grDevices::convertColor
to formulas from Bruce Lindbloom for color conversions, since the former function inaccurately converts colors. - Deprecated
...
inqualpal
since the function no longer uses an optimizer.