¿Cómo puedo extraer los rangos de los ejes de trazado para un objeto ggplot2?

Tengo un objeto de ggplot2 , digamos myPlot , ¿cómo puedo identificar los rangos para los ejes xey?

No parece ser un simple múltiplo del rango de los valores de datos, porque uno puede cambiar la escala de los gráficos, modificar los rangos de los ejes, y así sucesivamente. findFn (de sos ) y Google no parecen estar findFn resultados relevantes, aparte de cómo establecer los rangos de los ejes.

En las versiones más nuevas de ggplot2, puede encontrar esta información entre la salida de ggplot_build(p) , donde p es su objeto ggplot.

Para versiones anteriores de ggplot (<0.8.9), la siguiente solución funciona:

Y hasta que Hadley publique la nueva versión, esto podría ser útil. Si no establece los límites en el diagtwig, no habrá información en el objeto ggplot. Sin embargo, en ese caso, puede usar los valores predeterminados de ggplot2 y obtener los valores xlim e ylim de los datos.

 > ggobj = ggplot(aes(x = speed, y = dist), data = cars) + geom_line() > ggobj$coordinates$limits $x NULL $y NULL 

Una vez que establece los límites, están disponibles en el objeto:

 > bla = ggobj + coord_cartesian(xlim = c(5,10)) > bla$coordinates$limits $x [1] 5 10 $y NULL 

Obtener el yrange con

 ggplot_build(myPlot)$panel$ranges[[1]]$y.range 

y el xrange con

 ggplot_build(myPlot)$panel$ranges[[1]]$x.range 

Estoy usando ggplot2 versión 2, no estoy seguro de si esto es lo mismo que la versión anterior, supongamos que ha guardado su trazado en el objeto plt . Es fácil extraer los rangos

 # y-range layer_scales(plt)$y$range$range # x-range layer_scales(plt)$x$range$range 

En la versión 2.2.0, esto tiene que hacerse de la siguiente manera:

 # y-range ggplot_build(plot.object)$layout$panel_ranges[[1]]$y.range # x-range ggplot_build(plot.object)$layout$panel_ranges[[1]]$x.range 

ACTUALIZAR

Actualmente uso ggplot2 versión 2.2.1.9000 (versión de desarrollo) y la forma en que se extraen los rangos de los valores del eje X y del eje y ha cambiado una vez más:

 obj <- qplot(mtcars$disp, bins = 5) # x range ggplot_build(obj)$layout$panel_params[[1]]$x.range # y range ggplot_build(obj)$layout$panel_params[[1]]$y.range 

MAYOR RESPUESTA

Actualmente estoy usando ggplot2 versión 2.1.0.9001 y noté que los rangos se pueden extraer usando una pieza ligeramente diferente de código R :

 obj <- qplot(mtcars$disp, bins = 5) # x range ggplot_build(obj)$layout$panel_ranges[[1]]$x.range # y range ggplot_build(obj)$layout$panel_ranges[[1]]$y.range 

** A partir de agosto de 2018, extrae los rangos xey y ejes con lo siguiente. ** ggplot_build(obj)$layout$panel_scales_x[[1]]$range$range ggplot_build(obj)$layout$panel_scales_y[[1]]$range$range