Nothing
## ---- include = FALSE---------------------------------------------------------
knitr::opts_chunk$set(
collapse = TRUE,
comment = "#>",
dev = "ragg_png",
fig.width = 6
)
## ----setup--------------------------------------------------------------------
library(ggfx)
## -----------------------------------------------------------------------------
native_rep <- farver::encode_native('#45fe2a')
native_rep
farver::decode_native(native_rep)
## -----------------------------------------------------------------------------
library(ggplot2)
speckle <- function(x, colour, proportion) {
raster_dim <- dim(x)
n_pixels <- prod(raster_dim)
n_speckles <- n_pixels * proportion
x[sample(length(x), n_speckles)] <- farver::encode_native(colour)
x
}
ggplot(mtcars, aes(x = factor(gear), y = disp)) +
with_custom(
geom_boxplot(),
filter = speckle,
colour = 'forestgreen',
proportion = 0.05
)
## -----------------------------------------------------------------------------
fill_patch_naive <- function(x, colour, x_range, y_range) {
cols <- seq(x_range[1], x_range[2])
rows <- seq(y_range[1], y_range[2])
cat(dim(x))
x[rows, cols] <- farver::encode_native(colour)
x
}
ggplot(mtcars, aes(x = factor(gear), y = disp)) +
with_custom(
geom_boxplot(),
filter = fill_patch_naive,
colour = 'forestgreen',
x_range = c(80, 250),
y_range = c(50, 100)
)
## -----------------------------------------------------------------------------
fill_patch <- function(x, colour, x_range, y_range) {
patch <- get_raster_area(
raster = x,
xmin = x_range[1],
ymin = y_range[1],
xmax = x_range[2],
ymax = y_range[2]
)
patch[] <- farver::encode_native(colour)
set_raster_area(
raster = x,
value = patch,
xmin = x_range[1],
ymin = y_range[1]
)
}
ggplot(mtcars, aes(x = factor(gear), y = disp)) +
with_custom(
geom_boxplot(),
filter = fill_patch,
colour = 'forestgreen',
x_range = c(80, 250),
y_range = c(50, 100)
)
## -----------------------------------------------------------------------------
fill_patch <- function(x, colour, x_range, y_range) {
x_range <- to_pixels(x_range, location = TRUE)
y_range <- sort(to_pixels(y_range, y_axis = TRUE, location = TRUE))
patch <- get_raster_area(
raster = x,
xmin = x_range[1],
ymin = y_range[1],
xmax = x_range[2],
ymax = y_range[2]
)
patch[] <- farver::encode_native(colour)
set_raster_area(
raster = x,
value = patch,
xmin = x_range[1],
ymin = y_range[1]
)
}
ggplot(mtcars, aes(x = factor(gear), y = disp)) +
with_custom(
geom_boxplot(),
filter = fill_patch,
colour = 'forestgreen',
x_range = unit(c(0.3, 0.7), 'npc'),
y_range = unit(c(0.4, 0.6), 'npc')
)
## -----------------------------------------------------------------------------
flip_image <- function(x, horizontal = TRUE) {
dims <- dim(x)
rows <- seq_len(dims[1])
cols <- seq_len(dims[2])
if (horizontal) {
cols <- rev(cols)
} else {
rows <- rev(rows)
}
index_raster(x, cols, rows)
}
ggplot(mtcars, aes(x = factor(gear), y = disp)) +
with_custom(
geom_boxplot(aes(fill = as.factor(gear))),
filter = flip_image
)
## -----------------------------------------------------------------------------
flip_image <- function(x, horizontal = TRUE) {
vp <- get_viewport_area(x)
dims <- dim(vp)
rows <- seq_len(dims[1])
cols <- seq_len(dims[2])
if (horizontal) {
cols <- rev(cols)
} else {
rows <- rev(rows)
}
vp <- index_raster(vp, cols, rows)
set_viewport_area(x, vp)
}
ggplot(mtcars, aes(x = factor(gear), y = disp)) +
with_custom(
geom_boxplot(aes(fill = as.factor(gear))),
filter = flip_image
)
## -----------------------------------------------------------------------------
implode <- function(x, factor = 0.5) {
vp <- magick::image_read(get_viewport_area(x))
vp <- magick::image_implode(vp, factor)
set_viewport_area(x, as.raster(vp, native = TRUE))
}
ggplot(mtcars, aes(x = factor(gear), y = disp)) +
with_custom(
geom_boxplot(aes(fill = as.factor(gear))),
filter = implode
)
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.