gridpattern
menyediakan fungsi grid.pattern () dan polaGrob () untuk digunakan dengan sistem grafis grid R. Mereka mengisi jalur batas yang ditentukan pengguna dengan pola yang ditentukan pengguna. Grob pola ini termasuk versi yang ditingkatkan dari pola yang awalnya terkandung dalam paket ggpattern Mike FC yang luar biasa serta asli "pch", "polygon_tiling", "reguler_polygon", "rose", "text", "wave", dan "weave" pola "pola" .
{gridpattern}
saat ini menyediakan {grid}
dukungan grob untuk pola berikut:
Untuk menginstal versi pengembangan, gunakan perintah berikut di 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
secara otomatis mendukung semua pola yang disediakan oleh gridpattern
karena ggpattern
v0.2.0. Berikut adalah contoh menggunakan pola "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 " )))
Seseorang juga dapat membuat pola khusus untuk digunakan dengan ggpattern
. Berikut adalah contoh menciptakan pola "tiling3" yang menciptakan tiling poligon tiga warna menggunakan warna fill
, warna pattern_fill
, dan warna "rata-rata" mereka.
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 ' ))
Meskipun penggunaan paket paket "ggpattern" masih sangat disarankan, seseorang dapat secara langsung menggunakan pola/gradien isian dalam geom ggplot2
dasar sejak v3.5.0. patternFill()
Wraps grid::pattern()
dan PatternGrob () dan merupakan salah satu cara untuk menggunakan pola gridpattern
secara langsung dengan 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 memungkinkan penggunaan fungsi grob khusus untuk sepenuhnya menyesuaikan penampilan potongan permainan seseorang. {piecepackr}
Dilengkapi dengan berbagai fungsi kenyamanan seperti pp_shape()
untuk memfasilitasi pembuatan piece gim khusus menggunakan fungsi grob khusus. Berikut adalah contoh membuat pemeriksa "berpola" yang diisi dengan tiling poligon yang seragam dengan menggunakan metode pp_shape()
Objects ' pattern()
yang ditenagai oleh {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 " )