The hardware and bandwidth for this mirror is donated by dogado GmbH, the Webhosting and Full Service-Cloud Provider. Check out our Wordpress Tutorial.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]dogado.de.
biopalette provides image-inspired color palettes for biomedical visualization. Each palette has a documented source and one of three types:
This guide follows the usual workflow: find a palette, inspect it,
retrieve the colors, and apply it directly to a plot. See
vignette("install", package = "biopalette") if the package
is not yet installed.
Load biopalette and inspect the bundled collection:
library(biopalette)
list_palettes()[c("name", "type", "n_color")]
#> name type n_color
#> 1 bcell_atlas2 diverging 5
#> 2 walter_white diverging 5
#> 3 walter_white3 diverging 5
#> 4 gene_red qualitative 2
#> 5 heat_light qualitative 2
#> 6 three_body qualitative 3
#> 7 lactate_steps qualitative 5
#> 8 walter_white2 qualitative 5
#> 9 tam_pastel qualitative 6
#> 10 bcell_atlas qualitative 7
#> 11 cancer_mosaic qualitative 15
#> 12 bcell_clusters qualitative 20
#> 13 babel qualitative 21
#> 14 mitonuclear_blue sequential 6
#> 15 mitonuclear_orange sequential 6Filter by type when the visual role is already known:
list_palettes(type = "sequential")[c("name", "n_color")]
#> name n_color
#> 1 mitonuclear_blue 6
#> 2 mitonuclear_orange 6palette_info() returns the complete metadata for one
palette without drawing it:
palette_info("mitonuclear_blue")
#> name type n_color colors
#> 1 mitonuclear_blue sequential 6 #EEF4FB,....For visual browsing, call palette_gallery() in an
interactive R session. It builds one gallery page per palette type and
reports each page as it is ready.
get_palette() returns a character vector of HEX colors.
Palette names are unique across the bundled collection, so
type is normally unnecessary:
get_palette("three_body")
#> [1] "#6495ED" "#339933" "#FF4500"
get_palette("mitonuclear_blue")
#> [1] "#EEF4FB" "#DDF1F5" "#B9DBF4" "#95AAD3" "#3A68AE" "#155289"The meaning of n follows the palette type. For a
qualitative palette, it selects the first n category colors
and cannot exceed the palette size:
For sequential and diverging palettes, the stored colors are stops
along a ramp. Asking for n colors samples the whole ramp in
Lab color space rather than taking colors from only one end:
get_palette("mitonuclear_blue", n = 3)
#> [1] "#EEF4FB" "#A7C2E3" "#155289"
get_palette("walter_white", n = 7)
#> [1] "#1991A9" "#80B3BB" "#BAD1CF" "#E7E9E4" "#BEC7A6" "#889669" "#495A2E"Use reverse = TRUE when the direction of a palette
should be flipped:
The returned vector can be used anywhere that accepts R color values. For ggplot2, the scale functions provide a shorter and safer route.
Map a qualitative palette to unordered groups with
scale_color_biopalette():
library(ggplot2)
#> Warning: package 'ggplot2' was built under R version 4.5.3
ggplot(iris, aes(Sepal.Length, Sepal.Width, color = Species)) +
geom_point(size = 2.5) +
scale_color_biopalette("three_body") +
theme_minimal()Use a color scale when the mapped aesthetic is
color (or colour), and a fill
scale when the mapped aesthetic is fill. This distinction
belongs to the geometry, not to the palette itself:
ggplot(iris, aes(Species, Sepal.Length, fill = Species)) +
geom_boxplot() +
scale_fill_biopalette("three_body", guide = "none") +
theme_minimal()Discrete scales request exactly as many colors as the trained data
has levels. Qualitative palettes use their first n colors;
sequential and diverging palettes sample n colors across
the complete ramp. A qualitative palette raises an informative error
when it does not contain enough colors.
Continuous data requires a sequential or diverging palette and one of the gradient functions. A sequential fill gradient is appropriate for density:
ggplot(faithfuld, aes(waiting, eruptions, fill = density)) +
geom_raster() +
scale_fill_biopalette_gradient("mitonuclear_blue") +
theme_minimal()For values interpreted relative to a reference point, use a diverging
palette and set midpoint. Here zero means no deviation from
the mean:
plot_data <- transform(
mtcars,
cylinders = factor(cyl),
gears = factor(gear),
mpg_difference = mpg - mean(mpg)
)
ggplot(plot_data, aes(cylinders, gears, fill = mpg_difference)) +
geom_tile(color = "white", linewidth = 0.5) +
scale_fill_biopalette_gradient("walter_white", midpoint = 0) +
labs(x = "Cylinders", y = "Gears", fill = "MPG difference") +
theme_minimal()Qualitative palettes cannot define continuous gradients because interpolating unordered category colors has no stable meaning.
preview_palette() draws directly to the active graphics
device. Its five styles are "bar", "pie",
"point", "rect", and
"circle":
The same n and reverse rules used by
get_palette() also apply to previews:
hex2rgb() and rgb2hex() convert between HEX
and RGB or RGBA values. Alpha is preserved when present:
vignette("palette", package = "biopalette") for
the sources, intended uses, and limitations of every bundled
palette.?scale_color_biopalette for discrete scale
options.?scale_color_biopalette_gradient for continuous
gradients, transformations, custom stop positions, and diverging
midpoints.vignette("tessera", package = "biopalette") to
explore palettes, example datasets, Palette Lab, and complete R figure
recipes.These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.
Health stats visible at Monitor.