@@ -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}
0 commit comments