Как я могу извлечь диапазоны осей для объекта ggplot2?

У меня есть объект из ggplot2 , скажем myPlot , как я могу определить диапазоны для осей x и y?

Он не кажется простым кратным диапазону значений данных, поскольку можно масштабировать графики, изменять диапазоны осей и т. Д. findFn (from sos ) и Google, похоже, не findFn к соответствующим результатам, кроме как устанавливать диапазоны осей.

В новых версиях ggplot2 вы можете найти эту информацию среди вывода ggplot_build(p) , где p – ваш объект ggplot.

Для более старых версий ggplot (<0.8.9) работает следующее решение:

И пока Хэдли не выпустит новую версию, это может быть полезно. Если вы не зададите лимиты на графике, в объекте ggplot не будет информации. Однако в этом случае вы можете использовать значения по умолчанию ggplot2 и получить xlim и ylim из данных.

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

Как только вы установите ограничения, они становятся доступными в объекте:

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

Возьмите yrange с

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

и xrange с

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

Я использую ggplot2 version 2, я не уверен, что это та же самая предыдущая версия. Предположим, вы сохранили свой сюжет на объекте plt . Легко извлекать диапазоны,

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

В версии 2.2.0 это должно быть сделано следующим образом:

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

ОБНОВИТЬ

В настоящее время я использую версию ggplot2 версии 2.2.1.9000 (версия для разработки) и способ изменения диапазонов значений по оси X и оси Y изменился еще раз:

 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 

ПОЛНЫЙ ОТВЕТ

В настоящее время я использую ggplot2 version 2.1.0.9001, и я заметил, что диапазоны могут быть извлечены с использованием немного другого fragmentа кода 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 

** По состоянию на август 2018 вы извлекаете диапазоны x и y-осей следующим образом. ** ggplot_build(obj)$layout$panel_scales_x[[1]]$range$range ggplot_build(obj)$layout$panel_scales_y[[1]]$range$range

  • Блочно-диагональное связывание матриц
  • Объедините неравные данные и замените отсутствующие строки на 0
  • R - Как получить индексы строк и столбцов согласованных элементов из матрицы расстояния
  • Выбор подмножества столбцов в таблице данных.
  • передать символьные строки в ggplot2 внутри функции
  • Как отсортировать один вектор, основанный на значениях другого
  • Показывать% вместо графов в диаграммах категориальных переменных
  • Как разбить фрейм данных?
  • Сохранить сюжет в объекте
  • R передать переменные столбцы в ggplot2
  • Как отображать только целые значения на оси с помощью ggplot2
  • Давайте будем гением компьютера.