NDPalette provides color palettes that approximate the
University of Notre Dame brand colors, together with
ggplot2 color and fill scales. These colors are well suited
to statistical visualization and psychometric analysis: the white-safe
ordering keeps groups legible in plots of data, and the
near-white-to-navy ramps suit continuous quantities such as correlations
and factor loadings. The default palette leads with six Notre Dame brand
colors that read clearly on a white background and extends through seven
former Notre Dame colors, interpolating when more colors are needed than
the brand supplies. This is an independent project and is not affiliated
with or endorsed by the University.
# install.packages("remotes")
remotes::install_github("yelleKneK/NDPalette")A gallery of the palettes with ggplot2 examples (one
through ten groups, common chart types, the alternative palettes, the
brand tints, and theming) is in the package vignette. Run
vignette("NDPalette"), or read vignettes/NDPalette.Rmd.
The default "nd" palette begins with six Notre Dame
brand colors, in white-safe priority order:
library(NDPalette)
cols <- nd_palette(6)
labs <- c("ND Blue", "Bright Gold", "Green",
"Bright Blue", "Metallic Gold", "Dark Sky Blue")
txt <- c("white", "black", "white", "white", "black", "black")
op <- par(mar = c(0, 0, 0, 0))
image(seq_along(cols), 1, as.matrix(seq_along(cols)),
col = cols, axes = FALSE, xlab = "", ylab = "")
text(seq_along(cols), 1.15, labs, col = txt, cex = 0.9)
text(seq_along(cols), 0.85, cols, col = txt, cex = 0.8)
par(op)Beyond six, it continues through the seven former Notre Dame brand
colors, thirteen in all. show_palette() previews the whole
thing (it defaults to the full Notre Dame palette):
show_palette()
Each color has a readable name, too. Passing a character vector to
the labels argument prints those names on the swatches in
place of the hex values (nd_colors is the full table of
names, hex values, and roles):
show_palette(nd_palette(), labels = nd_colors$name[match(nd_palette(), nd_colors$hex)])
In a ggplot2 plot, add the scale; it maps the grouping
levels to the Notre Dame colors automatically:
library(ggplot2)
ggplot(iris, aes(Sepal.Length, Petal.Length, colour = Species)) +
geom_point() +
scale_colour_nd()
ggplot(mtcars, aes(factor(cyl), fill = factor(cyl))) +
geom_bar() +
scale_fill_nd()Outside ggplot2, ask nd_palette() for the
hex vector and use it anywhere that accepts colors:
nd_palette(3)
#> [1] "#0c2340" "#d39f10" "#0a843d"
barplot(c(3, 5, 2), col = nd_palette(3))
Past the first six, the palette continues into the former Notre Dame colors, interpolating beyond the thirteen anchors:
nd_palette(8)
#> [1] "#0c2340" "#d39f10" "#0a843d" "#1c4f8f" "#c1cddd" "#ae9142" "#36deb8"
#> [8] "#4c1c2a"A colorblind-friendly ordering of the actual Notre Dame
colors is available as "nd_cvd", arranged so the colors
stay distinguishable under simulated deuteranopia, protanopia, and
tritanopia. It leads with the CVD-safe ND Blue and Bright Gold:
nd_palette(5, palette = "nd_cvd")
#> [1] "#0c2340" "#d39f10" "#36deb8" "#0a843d" "#1c4f8f"The scale_*_nd() scales take a palette
argument, so the colorblind-friendly palette drops into a plot just like
the default, with scale_color_nd(palette = "nd_cvd").
The fixed anchors are exported as nd_palettes for tools
(for example paletteer) and for
users who want the raw values:
nd_palettes$nd
#> [1] "#0c2340" "#d39f10" "#0a843d" "#1c4f8f" "#c1cddd" "#ae9142" "#36deb8"
#> [8] "#4c1c2a" "#342551" "#a8a600" "#456300" "#e3e361" "#1e1a13"These colors are meant for plots of data. A two-group fill maps to ND Blue and Bright Gold, which suits the figures that recur in psychometric work, such as a chart of standardized factor loadings:
loadings <- matrix(
c(.74, .18, .69, .12, .78, .24, .81, .07,
.22, .71, .15, .79, .09, .66, .25, .80),
nrow = 2,
dimnames = list(c("Verbal", "Quantitative"), paste0("Item ", 1:8)))
barplot(loadings, beside = TRUE, col = nd_palette(2), border = NA,
ylab = "standardized loading", xlab = "item",
main = "Factor loadings", legend.text = rownames(loadings),
args.legend = list(bty = "n"))
The package vignette carries the idea further with
ggplot2: a correlation heatmap that ramps from a near-white
tint to navy for a matrix of item intercorrelations, and a set of item
characteristic curves that gives each item one of the well-separated
brand colors. Run vignette("NDPalette") for those.
Every color the package knows about is cataloged in
nd_colors, a data frame that labels each color with its
brand (University, Athletics, or none) and its role (primary, secondary,
former, tint, informal, or neutral). It now includes every official
color on the University branding page, among them Medium Blue, Dark
Gold, and Light Green. nd_color() pulls hex values out of
that table by name or by role, which is handier than a palette name when
you want one or two specific colors:
nd_color("navy", "green")
#> [1] "#0c2340" "#0a843d"
nd_color(role = "former")
#> [1] "#36deb8" "#4c1c2a" "#342551" "#a8a600" "#456300" "#e3e361" "#1e1a13"The table also carries the Notre Dame Athletics colors for reference.
Athletics is a separate brand system: it shares ND Blue with the
University, pairs it with a warmer Standard Dome Gold and a metallic
gold that has no sanctioned digital value (its hex is NA),
and uses an Irish Green a single Pantone step from the University green.
The Athletics colors are reference only and never enter
nd_palette() or the scales.
nd_colors
#> name key hex brand role
#> 1 ND Blue navy #0c2340 university primary
#> 2 ND Metallic Gold metallic_gold #ae9142 university primary
#> 3 Medium Blue medium_blue #143865 university secondary
#> 4 Bright Blue bright_blue #1c4f8f university secondary
#> 5 Dark Gold dark_gold #8c7535 university secondary
#> 6 Bright Gold bright_gold #d39f10 university secondary
#> 7 Green green #0a843d university secondary
#> 8 Light Green light_green #b3dac5 university secondary
#> 9 Dark Sky Blue dark_sky_blue #c1cddd university secondary
#> 10 Warm White warm_white #efe9d9 university tint
#> 11 Light Warm White light_warm_white #f8f4ec university tint
#> 12 Medium Sky Blue medium_sky_blue #e1e8f2 university tint
#> 13 Light Sky Blue light_sky_blue #edf2f9 university tint
#> 14 Teal teal #36deb8 university former
#> 15 Maroon maroon #4c1c2a university former
#> 16 Purple purple #342551 university former
#> 17 Light Olive light_olive #a8a600 university former
#> 18 Dark Olive dark_olive #456300 university former
#> 19 Pale Yellow pale_yellow #e3e361 university former
#> 20 Black black #1e1a13 university former
#> 21 Faint White faint_white #fdfcfa none informal
#> 22 Soft White soft_white #faf7f1 none informal
#> 23 Faint Yellow faint_yellow #fefdf3 none informal
#> 24 Soft Yellow (light) soft_yellow_light #fdf9e6 none informal
#> 25 Soft Yellow soft_yellow #faf3d7 none informal
#> 26 Soft Yellow (warm) soft_yellow_warm #f6edc6 none informal
#> 27 Notre Dame Blue athletics_blue #0c2340 athletics primary
#> 28 Standard Dome Gold dome_gold #c99700 athletics primary
#> 29 Metallic Dome Gold metallic_dome_gold <NA> athletics primary
#> 30 Irish Green irish_green #00843d athletics secondary
#> 31 White athletics_white #ffffff athletics neutral
#> white_safe pms
#> 1 TRUE 289
#> 2 TRUE 10127
#> 3 TRUE 2154
#> 4 TRUE 2945
#> 5 TRUE 4495
#> 6 TRUE 117
#> 7 TRUE 347
#> 8 TRUE 2246
#> 9 TRUE 5376
#> 10 FALSE 4545
#> 11 FALSE 9064
#> 12 FALSE 650
#> 13 FALSE 656
#> 14 TRUE <NA>
#> 15 TRUE <NA>
#> 16 TRUE <NA>
#> 17 TRUE <NA>
#> 18 TRUE <NA>
#> 19 TRUE <NA>
#> 20 TRUE <NA>
#> 21 FALSE <NA>
#> 22 FALSE <NA>
#> 23 FALSE <NA>
#> 24 FALSE <NA>
#> 25 FALSE <NA>
#> 26 FALSE <NA>
#> 27 TRUE 289
#> 28 TRUE 117
#> 29 NA 8642
#> 30 TRUE 348
#> 31 FALSE <NA>
#> description
#> 1 Primary. The signature Notre Dame Blue.
#> 2 Primary. The metallic Notre Dame Gold.
#> 3 Secondary. A deep blue between ND Blue and Bright Blue.
#> 4 Secondary. A bright mid blue.
#> 5 Secondary. A muted, darker gold.
#> 6 Secondary. A saturated gold; the anchor gold of the data palette.
#> 7 Secondary. The Notre Dame green.
#> 8 Secondary. A pale, soft green.
#> 9 Secondary. The one sky blue dark enough to use as a data color.
#> 10 Near-white tint. A warm cream for page backgrounds.
#> 11 Near-white tint. A lighter warm cream.
#> 12 Near-white tint. A pale blue.
#> 13 Near-white tint. The lightest pale blue.
#> 14 Former secondary Notre Dame color. A bright teal.
#> 15 Former secondary Notre Dame color. A deep maroon (dark brownish red).
#> 16 Former tertiary Notre Dame color; the only former color of the tertiary tier. A dark violet purple.
#> 17 Former secondary Notre Dame color. A yellow-green olive.
#> 18 Former secondary Notre Dame color. A dark olive green.
#> 19 Former secondary Notre Dame color. A soft chartreuse yellow.
#> 20 Former secondary Notre Dame color. A warm near-black.
#> 21 Informal background (not an ND brand color). A warm white just off pure white.
#> 22 Informal background (not an ND brand color). A soft warm white.
#> 23 Informal background (not an ND brand color). A soft yellow just off pure white.
#> 24 Informal background (not an ND brand color). A light, soft warm yellow.
#> 25 Informal background (not an ND brand color). A soft yellow.
#> 26 Informal background (not an ND brand color). A warmer soft yellow.
#> 27 Athletics. Notre Dame Blue, shared with the University.
#> 28 Athletics. The warmer Standard Dome Gold.
#> 29 Athletics. Metallic Dome Gold; a Pantone metallic ink with no digital hex.
#> 30 Athletics. Irish Green, one Pantone step from the University green.
#> 31 Athletics. White.The seven colors past the first six are former Notre Dame brand
colors: historical brand colors no longer in the current brand guide.
They are approximate, legacy colors, included only to extend the palette
past six, and are not part of the current Notre Dame brand. A color such
as purple appearing in this set should not be read as a current,
primary, or signature Notre Dame color. They round out the default
"nd" palette beyond six, and they are also available on
their own:
nd_palette(palette = "former")
#> [1] "#36deb8" "#4c1c2a" "#342551" "#a8a600" "#456300" "#e3e361" "#1e1a13"
show_palette(nd_palette(palette = "former"))
Four Notre Dame brand tints are too light to read as data on a white
background, so nd_palette() never returns them. They remain
useful brand colors away from the data layer, exported as
nd_tints for panel backgrounds, fills behind text, and the
light end of a sequential ramp running from a pale tint to a dark brand
color:
nd_tints
#> warm_white light_warm_white medium_sky_blue light_sky_blue
#> "#efe9d9" "#f8f4ec" "#e1e8f2" "#edf2f9"
ramp <- grDevices::colorRampPalette(c(nd_tints[["light_sky_blue"]],
nd_palette(1)))(7)
show_palette(ramp)
Six informal warm backgrounds are also provided as
nd_informal_tints, from a very light warm white to a warmer
soft yellow (the two faint_* tints sit just off pure white
for the lightest touch). These are not Notre Dame brand
colors; they are alternatives to a white background for HTML reports,
vignettes, and Shiny apps (vignette("NDPalette-shiny") uses
them):
nd_informal_tints
#> faint_white soft_white faint_yellow soft_yellow_light
#> "#fdfcfa" "#faf7f1" "#fefdf3" "#fdf9e6"
#> soft_yellow soft_yellow_warm
#> "#faf3d7" "#f6edc6"The default palette deliberately excludes four Notre Dame brand
colors that read poorly as data colors on a white background: Warm
White, Light Warm White, Medium Sky Blue, and Light Sky Blue. Among the
sky blues only Dark Sky Blue is admissible as a data color. Those four
tints are not discarded; they are exported as nd_tints for
backgrounds and ramps (see above). The thirteen data colors are the six
leading brand colors and the seven former Notre Dame brand colors; past
thirteen the set is interpolated. The colors approximate those in the University
branding guidelines.
NDPalette is a small, single-purpose palette package.
For general color-palette machinery, see Emil Hvitfeldt’s palettes package
and the companion r-color-palettes
gallery, which catalogs many palette packages for R.
NDPalette is distinct in focusing on one institution’s
colors, curated and ordered for statistical visualization and
psychometric analysis rather than as a general framework.
To cite NDPalette in a publication, use
citation("NDPalette")which returns the entry in inst/CITATION. Please cite a
specific version so the reference is unambiguous. Once a release is
archived on Zenodo the citation carries a DOI; cite the DOI whenever one
is available, since a single consistent, DOI-backed citation is what
lets indexes such as Google Scholar group citations to the package into
one record.