Skip to content

thhaase/entoptic

Repository files navigation

entoptic

Color palettes where every color has a paper behind it.

Named after entoptic phenomena — visual experiences generated within the eye itself, such as Haidinger's brushes and Eigengrau, both of which appear in this package.

Installation

devtools::install_github("thhaase/entoptic")

The Five Palettes

Option Name Type Story
"A" First Light Sequential Eigengrau (darkness) → CMB Beige (first light of the universe)
"B" Science Qualitative 5 colors from scientific phenomena
"C" Understorey Sequential Dark teal → Hospital Green → parchment
"D" Open Wound Sequential Tissue cross-section: eschar → necrotic → blood → granulation → adipose
"E" Hemolysis Sequential Hemoglobin degradation cascade during wound healing

Science Palette — the colors and their papers

Color Hex Phenomenon Reference
Baker-Miller Pink #FF91AF Aggression reduction in prison cells Schauss, A.G. (1979). Journal of Orthomolecular Psychiatry, 8(4), 218–221
Hospital Green #5B8C5A Surgical complement to blood-red; reduces retinal afterimages Sherman, H.M. (1914). California State Journal of Medicine, 12(5), 181–183
YInMn Blue #2E5090 First new inorganic blue pigment in over 200 years Smith, A.E. et al. (2009). Journal of the American Chemical Society, 131(47), 17084–17086
Haidinger's Brush #E8D44D Human polarization vision via xanthophyll dichroism in the macula (entoptic phenomenon) Haidinger, W. (1844). Annalen der Physik, 139(10), 29–39
Eigengrau #16161D Color perceived in total darkness; spontaneous retinal neuron firing (entoptic phenomenon) Barlow, H.B. (1956). Journal of the Optical Society of America, 46(8), 634–639

First Light — from darkness to the oldest light

The dark pole is Eigengrau (#16161D, L*≈5): the color your visual cortex generates in total absence of light, caused by spontaneous retinal neuron firing.

Barlow, H.B. (1956). Retinal noise and absolute threshold. Journal of the Optical Society of America, 46(8), 634–639. Baylor, D.A., Lamb, T.D., & Yau, K.W. (1979). Responses of retinal rods to single photons. Journal of Physiology, 288, 613–634.

The light pole is CMB Beige (#FFEFD5, L*≈95): the color of the Cosmic Microwave Background — the oldest light in the observable universe, the 2.725 K blackbody radiation released ~380,000 years after the Big Bang, first detected by Penzias & Wilson and later mapped across the full sky.

Penzias, A.A. & Wilson, R.W. (1965). A measurement of excess antenna temperature at 4080 Mc/s. The Astrophysical Journal, 142, 419–421. Bennett, C.L., et al. (2003). First-year WMAP observations. The Astrophysical Journal Supplement, 148(1), 1–27. Planck Collaboration (2020). Planck 2018 results I. Astronomy & Astrophysics, 641, A1. Glazebrook, K. & Baldry, I. (2002). The 2dF Galaxy Redshift Survey. The Astrophysical Journal, 571(1), 169–186.


Understorey — Hospital Green corridor

Anchored on Hospital Green (#5B8C5A), sweeping from dark teal to warm parchment. The anchor color is grounded in the same surgical science as the Science palette:

Sherman, H.M. (1914). California State Journal of Medicine, 12(5), 181–183.


Open Wound — tissue cross-section

A vertical cross-section through an open wound, from deep necrotic tissue to the surface fat layer:

Layer Hex Tissue Notes
Eschar #120305 Necrotic, desiccated tissue at the wound base Deepest layer (L*≈4); devitalized and insensate
Necrotic muscle #3D0E14 Devitalized muscle beneath the eschar Dark, poorly perfused
Venous pool #6E1520 Deoxygenated hemoglobin in collapsed capillaries Wound margin
Hemoglobin #DC143C Fresh oxygenated blood (oxyhemoglobin) Diagnostic red of a healthy bleeding wound
Granulation #C95555 Vascularized collagen III matrix Salmon-pink; indicates active healing
Dermis #D49080 Exposed subcutaneous connective tissue Wound edge
Adipose #E4CCB8 Subcutaneous fat layer Surface margin (L*≈82)

Hemolysis — hemoglobin degradation cascade

The temporal color cascade of hemoglobin degradation during wound healing. Each anchor maps to a biochemically distinct pigment stage in chronological order:

Stage Hex Pigment Time Reference
Anoxic #2B0D26 Deoxyhemoglobin Fe²⁺ (absorbs at 760 nm) 0–24 h
Venous #6B1A2A Hemoglobin losing O₂ 1–2 days
Hemoglobin #C41E3A Oxyhemoglobin (Soret 415 nm, Q bands 541/576 nm) Day 0 Zijlstra, W.G. et al. (2000). Hemoglobin. VU University Press
Methemoglobin #7B3B1A Oxidized heme Fe³⁺ (absorbs at 630 nm) 2–4 days
Biliverdin #4A7856 First linear tetrapyrrole from heme ring cleavage 5–7 days Tenhunen, R. et al. (1968). Proceedings of the National Academy of Sciences, 55, 748–755
Bilirubin #D4A843 Product of biliverdin reductase (absorbs at 450 nm) 7–14 days Kutty, R.K. & Maines, M.D. (1981). Journal of Biological Chemistry, 256, 3956–3962
Hemosiderin #9B6B2A Insoluble ferric oxyhydroxide-protein polymer 14+ days

Usage

Base R

library(entoptic)

# Generate n colors
entoptic(5, option = "science")
entoptic(256, option = "firstlight")

# Convenience functions
science(5)
understorey(9)
firstlight(256)
openwound(7)    # or open_wound(7)
hemolysis(7)

# Plots
image(volcano, col = firstlight(256))
filled.contour(volcano, color.palette = understorey)
barplot(1:5, col = science(5))
heatmap(as.matrix(mtcars), col = openwound(64))
heatmap(as.matrix(mtcars), col = hemolysis(64))

# Preview
entoptic_show("open_wound")
entoptic_show("hemolysis")

# Reverse & subset
firstlight(10, direction = -1)
entoptic(7, option = "hemolysis", begin = 0.2, end = 0.8)

ggplot2

library(ggplot2)
library(entoptic)

# ── Continuous ──────────────────
ggplot(faithfuld, aes(waiting, eruptions, fill = density)) +
  geom_tile() +
  scale_fill_entoptic_c(option = "firstlight")

ggplot(iris, aes(Sepal.Length, Sepal.Width, colour = Petal.Length)) +
  geom_point(size = 3) +
  scale_colour_entoptic_c(option = "understorey")

# ── Discrete ────────────────────
ggplot(mpg, aes(displ, hwy, colour = class)) +
  geom_point(size = 2) +
  scale_colour_entoptic_d(option = "science")

ggplot(mpg, aes(class, fill = class)) +
  geom_bar() +
  scale_fill_entoptic_d(option = "science")

# ── Binned ──────────────────────
ggplot(iris, aes(Sepal.Length, Sepal.Width, colour = Petal.Length)) +
  geom_point(size = 3) +
  scale_colour_entoptic_b(option = "firstlight")

Function Reference

Function Purpose
entoptic(n, option) Generate n hex colors
science(n) Science palette shortcut
understorey(n) Understorey shortcut
firstlight(n) First Light shortcut
open_wound(n) Open Wound shortcut
openwound(n) Open Wound shortcut (alias)
hemolysis(n) Hemolysis shortcut
entoptic_pal(option) Palette function (ggplot2 compatible)
scale_colour_entoptic_c() ggplot2 continuous colour
scale_fill_entoptic_c() ggplot2 continuous fill
scale_colour_entoptic_d() ggplot2 discrete colour
scale_fill_entoptic_d() ggplot2 discrete fill
scale_colour_entoptic_b() ggplot2 binned colour
scale_fill_entoptic_b() ggplot2 binned fill
entoptic_show(option) Preview a palette
entoptic_palettes() List all palettes

All scale_colour_* have scale_color_* aliases.

Parameters

All palette functions accept:

Param Default Description
alpha 1 Transparency [0, 1]
begin 0 Start position [0, 1]
end 1 End position [0, 1]
direction 1 1 = dark→light, -1 = reversed
option varies Palette name or letter "A""E"

About

Resources

License

Unknown, MIT licenses found

Licenses found

Unknown
LICENSE
MIT
LICENSE.md

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages