SkillAgentSearch skills...

Ggpattern

ggplot geoms with pattern fills

Install / Use

/learn @trevorld/Ggpattern
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

<!-- README.md is generated from README.Rmd. Please edit that file -->

ggpattern <img src="man/figures/logo.png" align="right" width="300" />

<!-- badges: start -->

CRAN Status Badge R build status

<!-- badges: end -->

<span style="font-size: xx-large; font-weight: normal;">ggpattern provides custom ggplot2 geoms which support filled areas with geometric and image-based patterns.</span>

Reading the articles/vignettes on the package website is probably the best way to get started.

Feature Summary

  • Custom versions of (almost) all the geoms from ggplot2 which have a region which can be filled.
  • A suite of aesthetics for controlling the pattern appearance (e.g. pattern_alpha)
  • The ability to include user-defined patterns

Installation

You can install the development version from R-universe

install.packages('ggpattern', repos = c('https://trevorld.r-universe.dev', 'https://cloud.r-project.org'))

or straight from the source hosted on Github using the {remotes} package:

# install.packages("remotes")
remotes::install_github("trevorld/ggpattern")

You can install the CRAN release version using:

install.packages("ggpattern")

Do note though that due to CRAN size limitations the CRAN version omits several vignettes that are contained in the development version (as well as on the package website).

Depending on your operating system, which dependencies you have not previously installed, and the method you choose to install {ggpattern} it is possible that you may need to first install some system libraries manually using a tool like apt, brew, dnf, etc. In particular as of June 2025 {ggpattern} depends on {gridpattern} which depends on {sf} which depends on {s2} and {units} which may need you to install the system development libraries for Abseil, OpenSSL, and udunits2. If you pay close attention to any install.packages() error messages it will often tell you the name of the missing system library you need to install with apt, brew, dnf, etc. Alternative R package installers like {pak} or r2u may also be able to help install such system library dependencies if necessary.

An installation error is highly unlikely to be an issue with {ggpattern} itself. Please don't open a Github issue unless you are sure it is an issue with {ggpattern} itself. If you have an error installing the package we strongly suggest that you look at all your error messages more closely to figure out which package dependency is failing to install and why. If necessary look up that package's documentation for additional information in installing it. See https://thomasadventure.blog/posts/install-r-packages/ for more info on installing R packages.

Quickstart

  1. Take an existing plot which contains a geom with a fillable area e.g geom_col().
  2. Use the {ggpattern} version of the geom e.g. ggpattern::geom_col_pattern() instead of ggplot2::geom_col()
  3. Set the aesthetic pattern to your choice of pattern e.g pattern = 'stripe', and set other options using pattern_* aesthetics
df <- data.frame(level = c("a", "b", "c", 'd'), outcome = c(2.3, 1.9, 3.2, 1))

ggplot(df) +
  geom_col_pattern(
    aes(level, outcome, pattern_fill = level), 
    pattern = 'stripe',
    fill    = 'white',
    colour  = 'black'
  ) +
  theme_bw(18) +
  theme(legend.position = 'none') + 
  labs(
    title    = "ggpattern::geom_col_pattern()",
    subtitle = "pattern = 'stripe'"
  ) +
  coord_fixed(ratio = 1/2)
<img src="man/figures/README-unnamed-chunk-2-1.png" alt="A bar chart with striped bars" width="100%" />

Gallery

<div> <a href="https://trevorldavis.com/R/ggpattern/dev/articles/geom-gallery-array.html#geom-bar-pattern-"><img width="45%" src="man/figures/readme/gallery-bar-array.jpg" alt="Example of bar chart filled with the 'kitten' 'placeholder' pattern"/> </a> <a href="https://trevorldavis.com/R/ggpattern/dev/articles/geom-gallery-geometry.html#b-w-example"><img width="45%" src="man/figures/readme/gallery-bar-bw.jpg" alt="Example of bar chart filled with black and white 'geometry' patterns"/> </a> <a href="https://trevorldavis.com/R/ggpattern/dev/articles/geom-gallery-geometry.html#colour-example-1"><img width="45%" src="man/figures/readme/gallery-bar-colour.jpg" alt="Example of a bar chart filled with colored 'geometry' patterns"/> </a> <a href="https://trevorldavis.com/R/ggpattern/dev/articles/geom-gallery-array.html#geom-bar-pattern-coord-flip-and-fit-image-to-height-and-graivty-towards-the-east-"><img width="45%" src="man/figures/readme/gallery-bar2-array.jpg" alt="A horizontal bar charts with flag images at the end of each bar"/> </a> <a href="https://trevorldavis.com/R/ggpattern/dev/articles/geom-gallery-array.html#geom-density-pattern-"><img width="45%" src="man/figures/readme/gallery-density-array.jpg" alt="A density chart filled with 'image' patterns"/> </a> <a href="https://trevorldavis.com/R/ggpattern/dev/articles/geom-gallery-geometry.html#geom-density-pattern-"><img width="45%" src="man/figures/readme/gallery-density-grid.jpg" alt="A density chart filled with 'geometry' patterns"/> </a> <a href="https://trevorldavis.com/R/ggpattern/dev/articles/geom-gallery-array.html#geom-map-pattern-"><img width="45%" src="man/figures/readme/gallery-map-array.jpg" alt="A map filled with greyscale 'magick' patterns"/> </a> <a href="https://trevorldavis.com/R/ggpattern/dev/articles/geom-gallery-array.html#geom-rect-pattern-"><img width="45%" src="man/figures/readme/gallery-rect-array.jpg" alt="Rectangles filled with gradients"/> </a> <div>

Feature Details

Available Geoms

ggpattern includes versions of (nearly) all geoms from ggplot2 which could plausibly support being filled with a pattern.

See the vignette galleries for examples of all the available geoms filled with geometry-based patterns and image-based/array-based patterns.

<details> <summary> <span style="color: blue;"> Click to show/hide list of supported geoms </span> </summary>

| ggplot2 | ggpattern | |----------------|-------------------------------| | geom_area | geom_area_pattern | | geom_bar | geom_bar_pattern | | geom_bin2d | geom_bin2d_pattern | | geom_boxplot | geom_boxplot_pattern | | geom_col | geom_col_pattern | | geom_crossbar | geom_crossbar_pattern | | geom_density | geom_density_pattern | | geom_histogram | geom_histogram_pattern | | geom_map | geom_map_pattern | | geom_polygon | geom_polygon_pattern | | geom_rect | geom_rect_pattern | | geom_ribbon | geom_ribbon_pattern | | geom_sf | geom_sf_pattern | | geom_tile | geom_tile_pattern | | geom_violin | geom_violin_pattern |

</details>

New aesthetics

To control pattern appearance, a raft of new aesthetics have been added. e.g. pattern_alpha, pattern_filename, pattern_density.

There are also scale functions to control each of these new aesthetics e.g. scale_pattern_alpha_discrete.

Not all aesthetics apply to all patterns. See the individual pattern vignettes for which aesthetics it uses, or see the first vignette on developing user-defined patterns for a table of aesthetic use by pattern, or see the individual vignettes for each pattern.

<details> <summary> <span style="color: blue;"> Click to show/hide list of new aesthetics </span> </summary>

| aesthetic | description | default | possible values | |--------------------------|-----------------------------------------------|------------|------------------------------------| | pattern | Name of the pattern to draw | 'stripe' | stripe, crosshatch, circle, image, placeholder, magick, gradient, plasma | | pattern_type | Generic control option | NA | pattern-dependent | | pattern_subtype | Generic control option | NA | pattern-dependent | | pattern_alpha | Alpha | 1 | value in range [0, 1] (npc units) | | pattern_linetype | Stroke linetype | 1 | linetype | | pattern_size | Stroke linewidth | 1 | linewidth | | pattern_shape | Plotting shape | 1 | shapes | | pattern_colour | Stroke colour | 'grey20' | colour | | pattern_fill | Fill colour | 'grey80' | colour | | pattern_fill2 | Second fill colour | '#4169E1' | colour | | pattern_angle | Rotation angle

View on GitHub
GitHub Stars386
CategoryDevelopment
Updated17d ago
Forks18

Languages

R

Security Score

80/100

Audited on Mar 7, 2026

No findings