blend_colors | R Documentation |
Blend multiple colors
blend_colors(
x,
preset = c("ryb", "none", "dichromat", "rgb", colorjam_presets()),
h1 = NULL,
h2 = NULL,
do_plot = FALSE,
lens = 0,
c_weight = 0.2,
c_floor = 12,
...
)
x |
|
preset |
|
do_plot |
|
lens |
|
c_weight |
|
c_floor |
|
... |
additional arguments are ignored. |
This function is intended to blend two or more colors, by default using "paint mixing" style, similar to subtractive color mixing. It accomplishes this goal by using a red-yellow-blue color wheel (very similar to cyan-yellow-magenta), then determines the average color hue with appropriate loss of color saturation.
This function also utilized color transparency, applied internally as relative color weights, during the color mixing process.
This function blends multiple colors, including several useful features:
color wheel red-yellow-blue, subtractive color mixing
can blend more than two colors at once
accounts for transparency of individual colors
The basic design guide was to meet these expectations:
red + yellow = orange
blue + yellow = green
red + blue = purple
blue + red + yellow = some brown/gray substance
The input x
can be a vector of colors, or a list
. When
x
is a list
then the unique vectors are blended, returning
a vector with length length(x)
.
The default additive color mixing, with red-green-blue colors used in electronic monitors, does not meet these criteria. (In no logical paint mixing exercise would someone expect that mixing red and green would make yellow; or that blue and yellow would make grey.)
In general the function performs well, with some exceptions
where the color hue angle is not well-normalized opposite
its complementary color, and therefore does not make the
expected "brownish/grey" output. Examples include
blend_colors(c("yellow", "purple"))
which is closer
to blue + yellow = green, because purple is also composed
of blue with some red. Indeed, the R color hue for purple
is 283; the hue for blue is 266; the hue for red is 12 (372);
which means purple is substantially closer to blue than red.
A suitable workaround in this case is to use
blend_colors(c("yellow", "deeppink4"))
.
character
vector with blended color; when input x
is a list
the returned vector will have length length(x)
.
Other colorjam core:
closestRcolor()
,
closest_named_color()
,
color_complement()
,
colors_to_df()
,
group2colors()
,
rainbowJam()
,
sort_colors()
,
subset_colors()
blend_colors(c("red", "yellow"), do_plot=TRUE)
blend_colors(c("blue", "gold"), do_plot=TRUE)
blend_colors(c("blue", "red3"), do_plot=TRUE)
blend_colors(c("dodgerblue", "springgreen3"), do_plot=TRUE)
blend_colors(c("green", "dodgerblue"), do_plot=TRUE)
blend_colors(c("red", "gold", "blue"), do_plot=TRUE)
blend_colors(c("green4", "red"), do_plot=TRUE)
blend_colors(c("deeppink4", "gold"), do_plot=TRUE)
blend_colors(c("blue4", "darkorange1"), do_plot=TRUE)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.