Create color complement by rotating the color hue

color_complement(
  color,
  Hflip = 180,
  Cfloor = 160,
  Lrange = c(0, 100),
  useWarpHue = TRUE,
  ...
)

Arguments

color

character vector of R compatible colors.

Hflip

numeric value in degrees (from 0 to 360) added to the color hue to produce the final color hue.

Cfloor

numeric value used to limit output chroma C values to this minimum value.

Lrange

numeric vector with the allowed range of output luminance L values. When supplied, output values are simply forced to this range with no other scaling of intermediate values.

useWarpHue

logical indicating whether to use the warp hue functions colorjam::h2hw() and colorjam::hw2h() which effectively change the color wheel from red-green-blue to red-yellow-blue.

...

additional arguments are ignored.

Details

This function rotates the color hue to create a complementary color for each color input. It differs from standard methods by using warped color hue by default (useWarpHue=TRUE), which uses a red-yellow-blue color wheel instead of R default red-green-blue. It also imposes a minimum chroma, which ensures the output color is reasonably high in color saturation.

Examples

n <- 5;
rc <- colorjam::rainbowJam(n);
rc_comp <- color_complement(rc, Cfloor=180);
rc_comp2 <- color_complement(rc, Cfloor=180, useWarpHue=FALSE);
jamba::showColors(list(rainbowJam=rc,
   `complement_warped\n(default uses RYB)`=rc_comp,
   `complement_nowarp\n(unwarped uses RGB)`=rc_comp2));


## divergent color gradients through white
## hint: use higher lens value to make middle colors more intense
rc_ramps <- lapply(jamba::nameVector(seq_along(rc)), function(i){
   j <- jamba::getColorRamp(c(rc[i], "white", rc_comp[i]),
      n=25,
      lens=0,
      divergent=TRUE);
   names(j) <- "";
   names(j)[1] <- "original colors";
   names(j)[25] <- "color complements";
   j;
});
jamba::showColors(rc_ramps, groupCellnotes=TRUE, groupByColors=FALSE);


## divergent color gradients through white
## hint: use higher lens value to make middle colors more intense
rc_ramps2 <- lapply(jamba::nameVector(seq_along(rc)), function(i){
   j <- jamba::getColorRamp(c(rc[i], "black", rc_comp[i]),
      n=25,
      lens=1,
      divergent=TRUE);
   names(j) <- "";
   names(j)[1] <- "original colors";
   names(j)[25] <- "color complements";
   j;
});
jamba::showColors(rc_ramps2, groupCellnotes=TRUE, groupByColors=FALSE);