@@ -71,7 +71,7 @@ GeomCustomAnn <- ggproto("GeomCustomAnn", Geom,
71
71
draw_panel = function (data , panel_params , coord , grob , xmin , xmax ,
72
72
ymin , ymax ) {
73
73
range <- ranges_annotation(
74
- coord , panel_params , vec_c( xmin , xmax ), vec_c( ymin , ymax ) ,
74
+ coord , panel_params , xmin , xmax , ymin , ymax ,
75
75
fun = " annotation_custom"
76
76
)
77
77
vp <- viewport(x = mean(range $ x ), y = mean(range $ y ),
@@ -91,16 +91,20 @@ annotation_id <- local({
91
91
}
92
92
})
93
93
94
- ranges_annotation <- function (coord , panel_params , x , y , fun ) {
94
+ ranges_annotation <- function (coord , panel_params , xmin , xmax , ymin , ymax , fun ) {
95
95
if (! inherits(coord , " CoordCartesian" )) {
96
96
cli :: cli_abort(" {.fn {fun}} only works with {.fn coord_cartesian}." )
97
97
}
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
+ )
106
110
}
0 commit comments