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