A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://github.com/trevorld/ggpattern below:

trevorld/ggpattern: ggplot geoms with pattern fills

ggpattern

ggpattern provides custom ggplot2 geoms which support filled areas with geometric and image-based patterns.

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

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.

  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)

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.

Click to show/hide list of supported geoms 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

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.

Click to show/hide list of new aesthetics 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 30 angle in degrees pattern_density Approx. fraction of area the pattern fills 0.2 value in range [0, 1] (fraction) pattern_spacing Spacing between repetitions of pattern 0.05 value in range [0, 1] (npc units) pattern_xoffset Shift pattern along x axis 0 value in range [0, 1] (npc units) pattern_yoffset Shift pattern along y axis 0 value in range [0, 1] (npc units) pattern_aspect_ratio Aspect ratio adjustment NA usual range [0.01, 10] pattern_key_scale_factor Scale factor for pattern in legend 1 pattern_filename Image filename/URL '' Filename/URL pattern_gravity Image placement 'center' ggpattern::magick_gravity_names pattern_filter Image scaling filter 'lanczos' ggpattern::magick_filter_names pattern_scale Scale 1 Multiplier pattern_orientation Orientation 'vertical' 'vertical', 'horizontal', 'radial' pattern_phase Phase 0 pattern_frequency Frequency 0.1 pattern_option_1 - 5 Generic options for expansion 0 pattern_grid Grid type 'square' 'square', 'hex', 'hex_circle' pattern_res Pattern resolution (pixels per inch) NA Resolution pattern_rot Shape rotation angle (within pattern) 0 angle in degrees

Users can write their own pattern functions and ask ggpattern to use them, without having to include the pattern in the package.

See the vignette on developing patterns: vignette("developing-patterns", package = "ggpattern").

Note: due to CRAN package size limits many of these vignettes are only available in the Github version of {ggpattern} and the package website.

Exploration of pattern parameters and appearance Developing your own pattern

RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4