Package 'munsell'

Title: Utilities for Using Munsell Colours
Description: Provides easy access to, and manipulation of, the Munsell colours. Provides a mapping between Munsell's original notation (e.g. "5R 5/10") and hexadecimal strings suitable for use directly in R graphics. Also provides utilities to explore slices through the Munsell colour tree, to transform Munsell colours and display colour palettes.
Authors: Charlotte Wickham <[email protected]>
Maintainer: Charlotte Wickham <[email protected]>
License: MIT + file LICENSE
Version: 0.5.1.9000
Built: 2024-10-29 03:00:44 UTC
Source: https://github.com/cwickham/munsell

Help Index


Plot all colours with the same chroma

Description

Plots slices of the Munsell colour system where chroma is constant.

Usage

chroma_slice(chroma.name = seq(0, 26, by = 2), back.col = "white")

Arguments

chroma.name

integer vector of the desired values.

back.col

colour for the background

Value

ggplot object

Examples

chroma_slice(2)
chroma_slice(18)
# Maybe want to delete text and add axis instead
p <- chroma_slice(18)
p$layers[[2]] <- NULL # remove text layer
p + ggplot2::theme(axis.text = ggplot2::element_text(), 
   axis.text.x = ggplot2::element_text(angle = 90, hjust = 1))
# all values 
## Not run: chroma_slice(seq(0, 38, by = 2))

Find the complement of a munsell colour

Description

Finds the munsell colour with the same chroma and value but on the opposite side of the hue circle. The complement is not defined for greys (hue == "N"), and the function returns the grey untransformed.

Usage

complement(col, ...)

Arguments

col

character vector of Munsell colours

...

deprecated

Value

character vector of Munsell colours

Examples

complement("5PB 2/4")
cols <- c("5PB 2/4", "5Y 7/8")
plot_mnsl(c(cols, complement(cols)))

A vertical slice through the Munsell space

Description

Plot a hue and its complement at all values and chromas

Usage

complement_slice(hue.name, back.col = "white")

Arguments

hue.name

character string of the desired hue.

back.col

colour for the background

Value

ggplot object

Examples

complement_slice("5PB")
complement_slice("5R")
complement_slice("10G")

Make a munsell colour darker

Description

Decreases the value of the Munsell colour by 1.

Usage

darker(col, steps = 1)

Arguments

col

character vector of Munsell colours

steps

number of steps to take in decreasing value

Value

character vector of Munsell colours

Examples

darker("5PB 3/4")
cols <- c("5PB 3/4", "5Y 7/8")
p <- plot_mnsl(c(cols, darker(cols), darker(cols, 2)))
p + ggplot2::facet_wrap(~ names, ncol = 2)

Make a munsell colour less saturated

Description

Decreases the chroma of the Munsell colour by one step steps (multiples of 2).

Usage

desaturate(col, steps = 1)

Arguments

col

character vector of Munsell colours

steps

number of steps to take in decreasing chroma

Value

character vector of Munsell colours

Examples

desaturate("5PB 2/4")
cols <- c("5PB 2/6", "5Y 7/8")
p <- plot_mnsl(c(cols, desaturate(cols), desaturate(cols, 2)))
p + ggplot2::facet_wrap(~ names, ncol = 2)

Plot all colours with the same hue

Description

Plots slices of the Munsell colour system where hue is constant.

Usage

hue_slice(hue.name = "all", back.col = "white")

Arguments

hue.name

character vector of the desired hues. Or "all" for all hues.

back.col

colour for the background

Value

ggplot object

Examples

hue_slice("5R")
hue_slice(c("5R", "5P"))
## Not run: hue_slice("all")

Converts a hue, chroma and value to a Munsell colour

Description

Takes separate specifications of hue, value and chroma and returns the text specification of that colour.

Usage

hvc2mnsl(hue, value = NULL, chroma = NULL, ...)

Arguments

hue

a character vector of Munsell hues, or a 3 column data frame containing the hue value and chroma levels

value

a numeric vector of values

chroma

a numeric vector of chromas

...

passed on to check_mnsl. Use fix = TRUE to fix "bad" colours

Details

Munsell colours are specified by hue, value and chroma. They take a form like "5PB 5/10" where the first characters represent the hue, followed by a space then the value and chroma separated by a "/". In this package value should be an integer in 0:10 and chroma an even number at most 24. Note that not all possible specifications result in representable colours. Regular recycling rules apply.

Value

a character string specification of a hex colour

See Also

check_mnsl, mnsl2hex

Examples

hvc2mnsl("5PB", 5, 10)
# All values of 5PB with chroma 10
hvc2mnsl("5PB", 1:9, 10) # note some are undefined
plot_mnsl(hvc2mnsl("5PB", 1:9, 10))

Make a munsell colour lighter

Description

Increases the value of the Munsell colour.

Usage

lighter(col, steps = 1)

Arguments

col

character vector of Munsell colours

steps

number of steps to take in increasing value

Value

character vector of Munsell colours

Examples

lighter("5PB 2/4")
cols <- c("5PB 2/4", "5Y 6/8")
p <- plot_mnsl(c(cols, lighter(cols), lighter(cols, 2)))
p + ggplot2::facet_wrap(~ names, ncol = 2)
# lighter and darker are usually reversible
lighter(darker("5PB 2/4"))
# unless you try to pass though white or black
lighter(darker("5PB 1/4"))

Converts a Munsell colour to hex

Description

Take a character string representation of a Munsell colour and returns the hex specification of that colour

Usage

mnsl(col, ...)

Arguments

col

a character string representing a Munsell colour.

...

passed on to in_gamut. Use fix = TRUE to fix "bad" colours

Details

Munsell colours are specified by hue, value and chroma. They take a form like "5PB 5/10" where the first characters represent the hue, followed by a space then the value and chroma separated by a "/". In this package value should be an integer in 0:10 and chroma an even number at most 24. Note that not all possible specifications result in representable colours.

Value

a character string specification of a hex colour

See Also

check_mnsl,in_gamut, hvc2mnsl

Examples

mnsl2hex("5PB 5/10")
# use a munsell colour in a plot
plot.new()
rect(0, 0, 1 ,1 , col = mnsl("5R 5/10"))

Munsell hues

Description

Returns a character vector of the Munsell hues in hue order starting at 2.5R and excluding grey ("N").

Usage

mnsl_hues()

Value

a character vector containing the hue values.

Examples

mnsl_hues()

Converts a Munsell colour to a hue, chroma and value triplet

Description

Takes a text specification of a Munsell colour and returns the hue, chroma and value triplet.

Usage

mnsl2hvc(col, ...)

Arguments

col

a character vector of Munsell colours

...

passed on to check_mnsl. Use fix = TRUE to fix "bad" colours

Details

Munsell colours are specified by hue, value and chroma. They take a form like "5PB 5/10" where the first characters represent the hue, followed by a space then the value and chroma separated by a "/". In this package value should be an integer in 0:10 and chroma an even number at most 24. Note that not all possible specifications result in representable colours.

Value

a data frame with named columns hue, value and chroma containing the hue, value and chroma levels.

See Also

check_mnsl, hvc2mnsl

Examples

mnsl2hvc("5PB 5/10")
hvc2mnsl(mnsl2hvc("5PB 5/10"))

Change the hue of a munsell colour

Description

Moves the hue of a munsell colour in the direction purple->blue->green->yellow->red->purple

Usage

pbgyr(col, steps = 1)

Arguments

col

character vector of Munsell colours

steps

number of hue steps to take

Value

character vector of Munsell colours

Examples

my_red <- "2.5R 4/8"
pbgyr(my_red)
plot_mnsl(c(my_red, pbgyr(my_red, 2), pbgyr(my_red, 4)))

Plot closest Munsell colour to an sRGB colour

Description

Take an sRGB colour and plots it along with the closest Munsell colour (using rgb2mnsl to find it)

Usage

plot_closest(R, G = NULL, B = NULL, back.col = "white")

Arguments

R

a numeric vector of red values or a 3 column matrix with the proportions R, G, B in the columns.

G

numeric vector of green values

B

numeric vector of blue values

back.col

colour for the background

Value

ggplot object

See Also

rgb2mnsl

Examples

plot_closest(0.1, 0.1, 0.3)
plot_closest(matrix(c(.1, .2, .4, .5, .6, .8),  ncol = 3))

Plot hex colours

Description

Quick way to look at a set of hex colours.

Usage

plot_hex(hex.colour, back.col = "white")

Arguments

hex.colour

character vector specifying colours in hex form

back.col

specification of background colour of display

Value

A ggplot object

Examples

plot_hex("#000000")
plot_hex(c("#000000","#FFFFFF"))

Plot a munsell colour

Description

Takes munsell text specifications and plots colour squares of them.

Usage

plot_mnsl(cols, back.col = "white", ...)

Arguments

cols

character vector specifying colours in Munsell form

back.col

specification of background colour of display

...

passed to check_mnsl. Add fix = TRUE to fix "bad" colours()

Value

A ggplot object

Examples

plot_mnsl("5R 5/6")
plot_mnsl("5R 5/6",  back.col = "grey40")
p <- plot_mnsl(c("5R 6/6", "5Y 6/6", "5G 6/6", "5B 6/6", "5P 6/6"),
 back.col = "grey40")
p
# returned object is a ggplot object so we can alter the layout
summary(p)
p + ggplot2::facet_wrap(~ num, nrow = 1)

Converts an sRGB colour to Munsell

Description

Finds the closest Munsell colour (in LUV space) to the specified sRGB colour

Usage

rgb2mnsl(R, G = NULL, B = NULL)

Arguments

R

a numeric vector of red values or a 3 column matrix with the proportions R, G, B in the columns.

G

numeric vector of green values

B

numeric vector of blue values

See Also

plot_closest

Examples

rgb2mnsl(0.1, 0.1, 0.3)
rgb2mnsl(matrix(c(.1, .2, .4, .5, .6, .8),  ncol = 3))
plot_closest(matrix(c(.1, .2, .4, .5, .6, .8),  ncol = 3))

Change the hue of a munsell colour

Description

Moves the hue of a munsell colour in the direction red->yellow->green->blue->purple->red

Usage

rygbp(col, steps = 1)

Arguments

col

character vector of Munsell colours

steps

number of hue steps to take

Value

character vector of Munsell colours

Examples

my_red <- "10R 4/8"
rygbp(my_red)
plot_mnsl(c(my_red, rygbp(my_red, 2), rygbp(my_red, 4)))

Make a munsell colour more saturated

Description

Increases the chroma of the Munsell colour by step steps (multiples of 2).

Usage

saturate(col, steps = 1)

Arguments

col

character vector of Munsell colours

steps

number of steps to take in increasing chroma

Value

character vector of Munsell colours

Examples

saturate("5PB 2/4")
cols <- c("5PB 2/2", "5Y 7/6")
p <- plot_mnsl(c(cols, saturate(cols), saturate(cols, 2)))
p + ggplot2::facet_wrap(~ names, ncol = 2)

Generate a sequence of Munsell colours

Description

Generates a sequence of Munsell colours. The sequence is generated by finding the closest munsell colours to a equidistant sequence of colours in #' LUV space.

Usage

seq_mnsl(from, to, n, fix = FALSE)

Arguments

from

character string of first Munsell colour

to

character string of last Munsell colour

n

number of colours in sequence

fix

Should colours outside of the gamut be fixed? Passed on to fix_mnsl

Value

character vector of Munsell colours

Examples

seq_mnsl("5R 2/4", "5R 5/16", 4)
plot_mnsl(seq_mnsl("5R 2/4", "5R 5/16", 4))
plot_mnsl(seq_mnsl("5R 5/6", 
  complement("5R 5/6"), 5))

Plot all colours with the same value

Description

Plots slices of the Munsell colour system where value is constant.

Usage

value_slice(value.name = 1:10, back.col = "white")

Arguments

value.name

integer vector of the desired values.

back.col

colour for the background

Value

ggplot object

Examples

value_slice(2)
value_slice(c(2, 4))
# all values 
## Not run: value_slice(1:10)