rm(list = ls())
library("ggpattern")
## Warning: 程辑包'ggpattern'是用R版本4.1.3 来建造的
library("ggplot2")
set.seed(92634) # Create example data
data <- data.frame(value = rnorm(30, 10),
group = letters[1:3])
head(data) # Head of example data
## value group
## 1 9.795025 a
## 2 9.442812 b
## 3 8.954915 c
## 4 9.456803 a
## 5 7.709386 b
## 6 9.589968 c
#Example 1: Drawing Barplot with Pattern Using geom_bar_pattern Function
ggplot(data, aes(group, value, fill = group)) + # Create barplot with pattern
geom_bar_pattern(stat = "identity") + theme_classic()

#Example 2: Manually Specify Colors of Pattern Using pattern_color & pattern_fill Arguments
ggplot(data, aes(group, value, fill = group)) + # Modify colors of pattern
geom_bar_pattern(stat = "identity",
pattern_color = "white",
pattern_fill = "black")

#Example 3: Drawing Barplot with Pattern for Each Group Using aes Function & pattern Argument
ggplot(data, aes(group, value, fill = group)) + # Different pattern for each group
geom_bar_pattern(stat = "identity",
pattern_color = "white",
pattern_fill = "black",
aes(pattern = factor(group)))

#Example 4: Drawing Density Plot with Pattern Using geom_density_pattern Function
ggplot(data, aes(value, fill = group)) + # Create density plot with pattern
geom_density_pattern(pattern_color = "white",
pattern_fill = "black",
aes(pattern = group))

#Example 5: Drawing Transparent Density Plot with Pattern Using alpha & pattern_alpha Arguments
ggplot(data, aes(value, fill = group)) + # Transparent density plot with pattern
geom_density_pattern(pattern_color = "white",
pattern_fill = "black",
alpha = 0.5,
pattern_alpha = 0.5,
aes(pattern = group))

#Example 6: Drawing Boxplot with Pattern Using geom_boxplot_pattern Function
ggplot(data, aes(value, fill = group)) + # Create boxplot with pattern
geom_boxplot_pattern(pattern_color = "white",
pattern_fill = "black",
aes(pattern = group))

#######################################
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'))

#####################################
head(mpg,2)
## # A tibble: 2 x 11
## manufacturer model displ year cyl trans drv cty hwy fl class
## <chr> <chr> <dbl> <int> <int> <chr> <chr> <int> <int> <chr> <chr>
## 1 audi a4 1.8 1999 4 auto(l5) f 18 29 p compa~
## 2 audi a4 1.8 1999 4 manual(m5) f 21 29 p compa~
ggplot(mpg, aes(class)) +
geom_bar_pattern(
aes(
pattern_angle = class
),
pattern = 'placeholder',
pattern_type = 'kitten',
fill = 'white',
colour = 'black',
pattern_spacing = 0.025
) +
theme_bw(18) +
labs(
title = "ggpattern::geom_bar_pattern()",
subtitle = "pattern = 'placeholder', pattern_type = 'kitten'"
) +
theme(legend.position = 'none') +
coord_fixed(ratio = 1/15) +
scale_pattern_discrete(guide = guide_legend(nrow = 1))

################################################
if (require("magick")) {
standard_image_filenames <- c(
system.file('img', 'Rlogo.png' , package = 'png'),
system.file('img', 'bug.jpg' , package = 'ggpattern'),
system.file('img', 'magpie.jpg' , package = 'ggpattern'),
system.file('img', 'seamless1.jpg', package = 'ggpattern'),
system.file('img', 'seamless2.jpg', package = 'ggpattern'),
system.file('img', 'seamless3.jpg', package = 'ggpattern')
)
p <- ggplot(mpg, aes(class, hwy)) +
geom_boxplot_pattern(
aes(
pattern_filename = class,
),
pattern = 'image',
pattern_type = 'tile',
pattern_scale = 0.5
) +
theme_bw(18) +
labs(
title = "ggpattern::geom_boxplot_pattern() + coord_flip()",
subtitle = "pattern = 'image'"
) +
scale_pattern_filename_discrete(choices = standard_image_filenames) +
theme(legend.position = 'none') +
coord_fixed(1/8)
p
}
## 载入需要的程辑包:magick
## Linking to ImageMagick 6.9.12.3
## Enabled features: cairo, freetype, fftw, ghostscript, heic, lcms, pango, raw, rsvg, webp
## Disabled features: fontconfig, x11

#https://statisticsglobe.com/ggpattern-r-package
#https://coolbutuseless.github.io/package/ggpattern/articles/geom-gallery-array.html#geom-bar-pattern-