gridpattern
proporciona funciones Grid.Pattern () y PatternGrob () para usar con el sistema de gráficos de cuadrícula de R. Completan una ruta de límite especificada por el usuario con un patrón especificado por el usuario. Estos Grobs de patrones incluyen versiones mejoradas de los patrones originalmente contenidos dentro del impresionante paquete GGPattern de Mike FC, así como "PCH" originales, "Polygon_tiling", "regular_polygon", "rosa", "texto", "onda" y "tejido" patrones .
{gridpattern}
actualmente proporciona {grid}
soporte Grob para los siguientes patrones:
Para instalar la versión de desarrollo, use el siguiente comando en R:
remotes :: install_github( " trevorld/gridpattern " )
library( " grid " )
library( " gridpattern " )
x_hex <- 0.5 + 0.5 * cos(seq( 2 * pi / 4 , by = 2 * pi / 6 , length.out = 6 ))
y_hex <- 0.5 + 0.5 * sin(seq( 2 * pi / 4 , by = 2 * pi / 6 , length.out = 6 ))
grid.pattern_circle( x_hex , y_hex , density = 0.5 , grid = " hex_circle " ,
fill = c( " blue " , " yellow " , " red " ))
grid.pattern_regular_polygon( x_hex , y_hex , shape = c( " convex4 " , " star8 " , " circle " ),
colour = " black " , fill = c( " blue " , " yellow " , " red " ),
density = c( 0.45 , 0.42 , 0.4 ), spacing = 0.08 , angle = 0 )
grid.pattern_regular_polygon( x_hex , y_hex , shape = " convex6 " , grid = " hex " ,
color = " transparent " , fill = c( " white " , " grey " , " black " ),
density = 1.0 , spacing = 0.1 )
gp <- gpar( fill = c( " yellow " , " blue " , " red " ))
grid.pattern_polygon_tiling( x_hex , y_hex , type = " truncated_hexagonal " ,
spacing = 0.15 , gp = gp )
blue <- grDevices :: rgb( 0.35 , 0.70 , 0.90 )
yellow <- grDevices :: rgb( 0.95 , 0.90 , 0.25 )
red <- grDevices :: rgb( 0.80 , 0.40 , 0.00 )
green <- grDevices :: rgb( 0.00 , 0.60 , 0.50 )
grid.rect( gp = gpar( fill = yellow , col = NA ))
gp <- gpar( fill = red , col = " black " )
grid.pattern_stripe( grid = " hex_circle " , density = 0.25 , spacing = 0.3 ,
angle = 0 , gp = gp )
grid.pattern_stripe( grid = " hex_circle " , density = 0.25 , spacing = 0.3 ,
angle = - 60 , gp = gp )
grid.pattern_stripe( grid = " hex_circle " , density = 0.25 , spacing = 0.3 ,
angle = 60 , gp = gp )
gp <- gpar( fill = blue , col = " black " )
grid.pattern_regular_polygon( shape = " convex12 " , grid = " hex_circle " , rot = 15 ,
density = 0.82 , spacing = 0.3 , angle = 0 , gp = gp )
gp <- gpar( fill = green , col = " black " )
scale <- star_scale( 12 , 30 )
grid.pattern_regular_polygon( shape = " star12 " , grid = " hex_circle " , rot = 15 ,
density = 0.82 , spacing = 0.3 , angle = 0 , gp = gp ,
scale = scale )
gp <- gpar( fill = c( " blue " , " red " , " yellow " , " green " ), col = " black " )
grid.newpage()
grid.pattern_rose( x_hex , y_hex ,
spacing = 0.18 , density = 0.5 , angle = 0 ,
frequency = c( 2 , 6 / 4 , 5 / 4 , 3 / 7 ), gp = gp )
playing_card_symbols <- c( " u 2660 " , " u 2665 " , " u 2666 " , " u 2663 " )
grid.pattern_text( x_hex , y_hex ,
shape = playing_card_symbols ,
colour = c( " black " , " red " , " red " , " black " ),
size = 24 , spacing = 0.12 , angle = 0 )
grid.pattern_wave( x_hex , y_hex , colour = " black " , type = " sine " ,
fill = c( " red " , " blue " ), density = 0.4 ,
spacing = 0.15 , angle = 0 ,
amplitude = 0.05 , frequency = 1 / 0.15 )
grid.pattern_weave( x_hex , y_hex , type = " satin " ,
colour = " black " , fill = " lightblue " , fill2 = " yellow " ,
density = 0.3 )
ggpattern
admite automáticamente todos los patrones proporcionados por gridpattern
desde ggpattern
V0.2.0. Aquí hay un ejemplo de uso del patrón "Stripe":
library( " ggpattern " ) # remotes::install_github("trevorld/ggpattern")
library( " ggplot2 " , warn.conflicts = FALSE )
library( " gridpattern " )
df <- data.frame ( trt = c( " a " , " b " , " c " ), outcome = c( 2.3 , 1.9 , 3.2 ))
ggplot( df , aes( trt , outcome )) +
geom_col_pattern(aes( fill = trt ), colour = ' black ' ,
pattern = ' stripe ' ,
pattern_fill = list (c( " grey30 " , " grey70 " , " white " , " grey70 " )))
También se puede crear patrones personalizados para usar con ggpattern
. Aquí hay un ejemplo de la creación de un patrón "mosaico 3" que crea tilos de polígono de tres colores usando el color fill
, el color pattern_fill
y su color "promedio".
tiling3_pattern <- function ( params , boundary_df , aspect_ratio , legend = FALSE ) {
args <- as.list( params )
args <- args [grep( " ^pattern_ " , names( args ))]
# hexagonal tiling using "regular_polygon" pattern
args $ pattern <- " polygon_tiling "
# three-color tiling using `fill`, `pattern_fill` and their "average"
avg_col <- gridpattern :: mean_col( params $ fill , params $ pattern_fill )
args $ pattern_fill <- c( params $ fill , avg_col , args $ pattern_fill )
args $ x <- boundary_df $ x
args $ y <- boundary_df $ y
args $ id <- boundary_df $ id
args $ prefix <- " "
do.call( gridpattern :: patternGrob , args )
}
options( ggpattern_geometry_funcs = list ( tiling3 = tiling3_pattern ))
df <- data.frame ( trt = c( " a " , " b " , " c " ), outcome = c( 2.3 , 1.9 , 3.2 ))
ggplot( df , aes( trt , outcome )) +
geom_col_pattern(aes( fill = trt , pattern_type = trt ),
pattern = ' tiling3 ' , pattern_angle = 45 ) +
scale_pattern_type_manual( values = c( " hexagonal " , " tetrakis_square " , " rhombille " )) +
theme( legend.key.size = unit( 1.5 , ' cm ' ))
Aunque el uso del paquete "GGPTERN" todavía se recomienda muy recomendado, se puede usar directamente los rellenos de patrón/gradiente en ggplot2
GEOMS BASE desde v3.5.0. patternFill()
wraps grid::pattern()
y PatternGrob () y es una forma de usar patrones gridpattern
directamente con ggplot2
:
library( " ggplot2 " , warn.conflicts = FALSE )
library( " gridpattern " )
pal <- grDevices :: palette()
herringbone <- patternFill( " polygon_tiling " , type = " herringbone " , fill = pal [ 2 ])
truncated_hexagonal <- patternFill( " polygon_tiling " , type = " truncated_hexagonal " , fill = pal [ 3 ])
pythagorean <- patternFill( " polygon_tiling " , type = " pythagorean " , fill = pal [ 4 ])
df <- data.frame ( trt = c( " a " , " b " , " c " ), outcome = c( 2.3 , 1.9 , 3.2 ))
ggplot( df , aes( trt , outcome )) +
geom_col( fill = list ( herringbone , truncated_hexagonal , pythagorean ))
Piecepackr permite el uso de funciones Grob personalizadas para personalizar completamente la apariencia de las piezas de juego. {piecepackr}
viene con una variedad de funciones de conveniencia como pp_shape()
para facilitar la creación de piezas de juego personalizadas utilizando funciones Grob personalizadas. Aquí hay un ejemplo de la creación de verificadores "estampados" llenos de tilos de polígono uniforme usando el método pp_shape()
Objects ' pattern()
alimentado por {gridpattern}
:
library( " grid " )
library( " gridpattern " )
library( " piecepackr " )
tilings <- c( " hexagonal " , " snub_square " , " pythagorean " ,
" truncated_square " , " triangular " , " trihexagonal " )
patternedCheckerGrobFn <- function ( piece_side , suit , rank , cfg ) {
opt <- cfg $ get_piece_opt( piece_side , suit , rank )
shape <- pp_shape( opt $ shape , opt $ shape_t , opt $ shape_r , opt $ back )
gp_pattern <- gpar( col = opt $ suit_color , fill = c( opt $ background_color , " white " ))
pattern_grob <- shape $ pattern( " polygon_tiling " , type = tilings [ suit ],
spacing = 0.3 , name = " pattern " ,
gp = gp_pattern , angle = 0 )
gp_border <- gpar( col = opt $ border_color , fill = NA , lex = opt $ border_lex )
border_grob <- shape $ shape( gp = gp_border , name = " border " )
grobTree( pattern_grob , border_grob )
}
checkers1 <- as.list(game_systems() $ checkers1 )
checkers1 $ grob_fn.bit <- patternedCheckerGrobFn
checkers1 <- pp_cfg( checkers1 )
x1 <- c( 1 : 3 , 1 : 2 , 1 )
x2 <- c( 6 : 8 , 7 : 8 , 8 )
df <- tibble :: tibble( piece_side = c( " board_face " , rep_len( " bit_back " , 24L )),
suit = c( 6L , rep(c( 1L , 3L , 4L , 5L ), each = 6L )),
rank = 8L ,
x = c( 4.5 , x1 , rev( x1 ), x2 , rev( x2 )),
y = c( 4.5 , rep(c( 1 , 1 , 1 , 2 , 2 , 3 , 6 , 7 , 7 , 8 , 8 , 8 ), 2 )))
pmap_piece( df , cfg = checkers1 , default.units = " in " )