Skip to content

Commit 9ab0a6d

Browse files
committed
allow mixing AsIs and numeric
1 parent a6c9613 commit 9ab0a6d

File tree

2 files changed

+15
-11
lines changed

2 files changed

+15
-11
lines changed

R/annotation-custom.R

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ GeomCustomAnn <- ggproto("GeomCustomAnn", Geom,
7171
draw_panel = function(data, panel_params, coord, grob, xmin, xmax,
7272
ymin, ymax) {
7373
range <- ranges_annotation(
74-
coord, panel_params, vec_c(xmin, xmax), vec_c(ymin, ymax),
74+
coord, panel_params, xmin, xmax, ymin, ymax,
7575
fun = "annotation_custom"
7676
)
7777
vp <- viewport(x = mean(range$x), y = mean(range$y),
@@ -91,16 +91,20 @@ annotation_id <- local({
9191
}
9292
})
9393

94-
ranges_annotation <- function(coord, panel_params, x, y, fun) {
94+
ranges_annotation <- function(coord, panel_params, xmin, xmax, ymin, ymax, fun) {
9595
if (!inherits(coord, "CoordCartesian")) {
9696
cli::cli_abort("{.fn {fun}} only works with {.fn coord_cartesian}.")
9797
}
98-
if (!inherits(x, "AsIs")) {
99-
x <- panel_params$x$scale$transform(x)
100-
}
101-
if (!inherits(y, "AsIs")) {
102-
y <- panel_params$y$scale$transform(y)
103-
}
104-
data <- coord$transform(data_frame0(x = x, y = y, .size = 2), panel_params)
105-
list(x = range(data$x, na.rm = TRUE), y = range(data$y, na.rm = TRUE))
98+
data <- data_frame0(xmin = xmin, xmax = xmax, ymin = ymin, ymax = ymax)
99+
data <- .ignore_data(data)[[1]]
100+
x <- panel_params$x$scale$transform_df(data)
101+
data[names(x)] <- x
102+
y <- panel_params$y$scale$transform_df(data)
103+
data[names(y)] <- y
104+
data <- .expose_data(data)[[1]]
105+
data <- coord$transform(data, panel_params)
106+
list(
107+
x = range(data$xmin, data$xmax, na.rm = TRUE),
108+
y = range(data$ymin, data$ymax, na.rm = TRUE)
109+
)
106110
}

R/annotation-raster.R

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ GeomRasterAnn <- ggproto("GeomRasterAnn", Geom,
7474
draw_panel = function(data, panel_params, coord, raster, xmin, xmax,
7575
ymin, ymax, interpolate = FALSE) {
7676
range <- ranges_annotation(
77-
coord, panel_params, vec_c(xmin, xmax), vec_c(ymin, ymax),
77+
coord, panel_params, xmin, xmax, ymin, ymax,
7878
fun = "annotation_raster"
7979
)
8080
rasterGrob(raster, range$x[1], range$y[1],

0 commit comments

Comments
 (0)