1# Transform the data as the coordinate system does 2cdata <- function(plot) { 3 pieces <- ggplot_build(plot) 4 5 lapply(pieces$data, function(d) { 6 dapply(d, "PANEL", function(panel_data) { 7 scales <- pieces$layout$get_scales(panel_data$PANEL[1]) 8 panel_params <- plot$coordinates$setup_panel_params(scales$x, scales$y) 9 plot$coordinates$transform(panel_data, panel_params) 10 }) 11 }) 12} 13 14pranges <- function(plot) { 15 layout <- ggplot_build(plot)$layout 16 17 x_ranges <- lapply(layout$panel_scales_x, function(scale) scale$get_limits()) 18 y_ranges <- lapply(layout$panel_scales_y, function(scale) scale$get_limits()) 19 20 21 npscales <- plot$scales$non_position_scales() 22 npranges <- lapply(npscales$scales$scales, function(scale) scale$get_limits()) 23 24 25 c(list(x = x_ranges, y = y_ranges), npranges) 26} 27