light_helpers: 'light' effect helper functions

cheap_darkenR Documentation

'light' effect helper functions

Description

Helper functions to generate a “light” effect for oblicubesGrob(), grid.oblicubes(), oblicuboidsGrob(), and grid.oblicuboids(). darken_face() is the default light argument for oblicubesGrob(), grid.oblicubes(), oblicuboidsGrob(), and grid.oblicuboids(). cheap_darken() is the default darkening function used by darken_face().

Usage

cheap_darken(col, amount)

darken_face(
  face,
  col,
  top = 0,
  west = 0.2,
  east = 0.2,
  south = 0.4,
  north = 0.4,
  darken_fn = cheap_darken
)

Arguments

col

Vector of colors to darken

amount

Fraction to darken by

face

Cube/cuboid face to color. One of "top", "west", "east", "south", or "north".

top

Amount to darken the "top" face.

west

Amount to darken the "west" face.

east

Amount to darken the "east" face.

south

Amount to darken the "south" face.

north

Amount to darken the "north" face.

darken_fn

Function to darken with. Should take two arguments: the first should be the colour and the second should be numeric amount to darken by. Default will be to use cheap_darken(). colorspace::darken() is a slower, “better” alternative.

Details

The light argument of oblicubesGrob(), grid.oblicubes(), geom_oblicubes(), oblicuboidsGrob(), grid.oblicuboids(), and geom_oblicuboids() needs a function that that takes two arguments: the first is face one of its five faces: "top", "west", "east", "south", or "north" and the second is col the cube/cuboid's fill color

Value

Vector of darkened colors.

Examples

demo_light <- function(light = darken_face, ...) {
  df <- data.frame(x=1, y=1, z=1)
  grid::grid.newpage()
  grid.oblicubes(df, ..., light=light, angle=45, lwd=4,
                 vp = grid::viewport(0.25, 0.25, 0.5, 0.5))
  grid.oblicubes(df, ..., light=light, angle=135, lwd=4,
                 vp = grid::viewport(0.75, 0.25, 0.5, 0.5))
  grid.oblicubes(df, ..., light=light, angle=-45, lwd=4,
                 vp = grid::viewport(0.25, 0.75, 0.5, 0.5))
  grid.oblicubes(df, ..., light=light, angle=-135, lwd=4,
                 vp = grid::viewport(0.75, 0.75, 0.5, 0.5))
}
demo_light()
demo_light(fill = "gold")
demo_light(light = function(face, col)
             darken_face(face, col, top = 0.3,
                         west = 0.6, east = 0.6,
                         south = 0.0, north = 0.0)
)
demo_light(light = function(face, col) {
             n <- length(col)
             switch(face,
               top = rep_len("grey90", n),
               west = rep_len("red", n),
               east = rep_len("green", n),
               south = rep_len("blue", n),
               north = rep_len("yellow", n))
           })

oblicubes documentation built on Aug. 27, 2022, 5:05 p.m.