| Title: | Shape Foundry & Geom for 'ggplot2' |
|---|---|
| Description: | A 'ggplot2' extension that supports arbitrary hand-crafted colourable and fillable shapes. New shapes may be feature requested via a GitHub issue. |
| Authors: | Carl Goodwin [aut, cre, cph] (ORCID: <https://orcid.org/0009-0009-4836-3840>) |
| Maintainer: | Carl Goodwin <[email protected]> |
| License: | MIT + file LICENSE |
| Version: | 0.4.0.9000 |
| Built: | 2026-10-09 21:24:47 UTC |
| Source: | https://github.com/cgoo4/ggfoundry |
Creates a visualisation of a chosen palette with each colour in the selected fillable shape.
display_palette( fill, pal_name, colour = "grey50", color = colour, shape = c("jar", "tube") )display_palette( fill, pal_name, colour = "grey50", color = colour, shape = c("jar", "tube") )
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". |
A ggplot2 object.
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" )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 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.
geom_casting( mapping = NULL, data = NULL, stat = "identity", position = "identity", ..., na.rm = FALSE, show.legend = NA, inherit.aes = TRUE )geom_casting( mapping = NULL, data = NULL, stat = "identity", position = "identity", ..., na.rm = FALSE, show.legend = NA, inherit.aes = TRUE )
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 |
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. The quill's shaft and ink
mark use colour, so the mark remains visible when its feather fill is
transparent. For the "halloween" set's skeleton and spiderweb, fill
colours the narrow interiors of bones and threads, so its effect is
subtler than on a book or ghost.
Placement exception: whereas other shapes are centred on their plotting coordinate, the quill's ink-contact point is placed there, so the nib touches the data point as if writing it. The whole quill is centred in legend keys for readability.
In addition to the supported aesthetics below, nudge_x, nudge_y,
hjust and vjust are also respected.
A geom layer that can be added to a ggplot.
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")
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))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))
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().
Shapes are nominal symbols, not an ordered scale. Note that the quill is
placed by its ink-contact point rather than its centre; see
geom_casting().
shapes_cast()shapes_cast()
A data frame of available sets and shapes.
# Returns a data frame of available shapes shapes_cast()# Returns a data frame of available shapes shapes_cast()