| Type: | Package |
| Title: | Shape Foundry & Geom for 'ggplot2' |
| Version: | 0.4.0 |
| Description: | A 'ggplot2' extension that supports arbitrary hand-crafted colourable & fillable shapes. New shapes may be feature requested via a Github issue. |
| License: | MIT + file LICENSE |
| Encoding: | UTF-8 |
| Depends: | ggplot2 (≥ 3.5.0), R (≥ 4.1) |
| Imports: | cli, grid, grImport2, lifecycle, rlang |
| Suggests: | dplyr, forcats, knitr, rmarkdown, spelling, stringr, testthat (≥ 3.0.0) |
| Config/Needs/website: | ggimage, ggfx, ggpp, ggtext, ggdendro, paletteer, palmerpenguins, patchwork, scales, showtext, tibble, rpart |
| Config/testthat/edition: | 3 |
| VignetteBuilder: | knitr |
| URL: | https://github.com/cgoo4/ggfoundry, https://cgoo4.github.io/ggfoundry/ |
| BugReports: | https://github.com/cgoo4/ggfoundry/issues |
| Language: | en-GB |
| Config/roxygen2/version: | 8.1.0 |
| NeedsCompilation: | no |
| Packaged: | 2026-09-27 13:44:22 UTC; carlgoodwin |
| Author: | Carl Goodwin [aut, cre, cph] |
| Maintainer: | Carl Goodwin <carl.goodwin@quantumjitter.com> |
| Repository: | CRAN |
| Date/Publication: | 2026-09-27 14:00:02 UTC |
ggfoundry: Shape Foundry & Geom for 'ggplot2'
Description
A 'ggplot2' extension that supports arbitrary hand-crafted colourable & fillable shapes. New shapes may be feature requested via a Github issue.
Author(s)
Maintainer: Carl Goodwin carl.goodwin@quantumjitter.com [copyright holder]
Authors:
Carl Goodwin carl.goodwin@quantumjitter.com [copyright holder]
See Also
Useful links:
Report bugs at https://github.com/cgoo4/ggfoundry/issues
Display a palette using fillable shapes
Description
Creates a visualisation of a chosen palette with each colour in the selected fillable shape.
Usage
display_palette(
fill,
pal_name,
colour = "grey50",
color = colour,
shape = c("jar", "tube")
)
Arguments
fill |
The colour of the shape fill. |
pal_name |
A character string for the name of the palette. |
colour, color |
The colour of the shape outline. Defaults to mid-grey to better support a website's light and dark mode. |
shape |
A character string for the name of the shape, e.g. "jar". |
Value
A ggplot2 object.
Examples
display_palette(
c("skyblue", "lightgreen", "pink", "bisque"),
"Custom Palette Names"
)
display_palette(
c("#9986A5", "#79402E", "#CCBA72", "#0F0D0E", "#D9D0D3", "#8D8680"),
"Vector of Hex Codes",
shape = "tube",
colour = "black"
)
display_palette(
c(
"#423C29", "#333031", "#8F898B", "#D2C9CB", "#AFA7A5", "#8D8680",
"#9986A5", "#8A666E", "#7B4638", "#976C46", "#BCA365", "#988A56"
),
"Multiple Rows"
)
Arbitrary hand-crafted fillable shapes for ggplot2
Description
Arbitrary hand-crafted colourable and fillable shapes for ggplot2.
New shapes may be feature requested via a Github issue.
Copies the grob tree, editing only the placement viewports; the styled picture grobs are shared with the template and left untouched.
Usage
geom_casting(
mapping = NULL,
data = NULL,
stat = "identity",
position = "identity",
...,
na.rm = FALSE,
show.legend = NA,
inherit.aes = TRUE
)
Arguments
mapping |
A set of aesthetic mappings created by |
data |
A data frame to use for the layer. If |
stat |
The statistical transformation to use on the data for this
layer. The default is |
position |
A position adjustment to use for overlapping points on
this layer. The default is |
... |
Other arguments passed on to the layer. These are often
aesthetics, used to set an aesthetic to a fixed value, like
|
na.rm |
If |
show.legend |
Logical. Should this layer be included in the legends?
|
inherit.aes |
If |
Details
Behind the scenes, a pair of vector images (outline & fill) are converted into Cairo graphics library SVG files, then into grid graphical objects (grobs) for use in a ggplot2 layer.
By default, the "violin" shape is used.
If the shape is mapped to a variable, e.g. aes(shape = factor(cyl)), then
scale_shape_manual() is also required to explicitly name the desired
shapes as a character vector (see examples). This is because standard
shapes are associated with a number, e.g. a circle is 19, whereas
geom_casting() shapes are associated only with character strings.
Aesthetics that vary per observation, e.g. a continuous fill, are
respected for each individual shape, whether grouping is implicit or
explicitly shared with group = 1. A fill of NA or "transparent"
renders the outline only: for shapes such as the "bowl" set, this hides
the steam while retaining the bowl outline.
In addition to the supported aesthetics below, nudge_x, nudge_y,
hjust and vjust are also respected.
Value
A geom layer that can be added to a ggplot.
Aesthetics
geom_casting() understands the following
aesthetics (required aesthetics are in bold):
-
x -
y -
alpha -
angle -
colour -
fill -
group -
shape -
size
Learn more about setting these aesthetics in
vignette("ggplot2-specs")
Examples
library(ggplot2)
# "Baby violin" shape by default
p <- ggplot(mtcars, aes(wt, mpg))
p + geom_casting()
# Change shape & fill
p + geom_casting(shape = "box", fill = "lightgreen")
# Shapes mapped to a variable
ggplot(mtcars, aes(wt, mpg, fill = factor(cyl))) +
geom_casting(aes(shape = factor(cyl))) +
scale_shape_manual(values = c("violin", "dendro", "box"))
# Continuous fill varies per observation, without a grouping workaround
ggplot(data.frame(x = 1:7, temperature = c(5, 18, 32, 47, 63, 81, 96)),
aes(x, 1, fill = temperature)) +
geom_casting(shape = "bowl2", colour = "#272626", size = 0.72) +
scale_fill_viridis_c(limits = c(0, 100)) +
scale_x_continuous(limits = c(0.35, 7.65), expand = expansion(mult = 0)) +
scale_y_continuous(limits = c(0, 1.85), expand = expansion(mult = 0))
Get the names of available shapes
Description
Create a data frame of available shapes and associated sets. This may be
filtered and used as a vector of strings in scale_shape_manual().
Usage
shapes_cast()
Value
A data frame of available sets and shapes.
Examples
# Returns a data frame of available shapes
shapes_cast()