Как я могу извлечь диапазоны осей для объекта ggplot2?
У меня есть объект из ggplot2
, скажем myPlot
, как я могу определить диапазоны для осей x и y?
Он не кажется простым кратным диапазону значений данных, поскольку можно масштабировать графики, изменять диапазоны осей и т. Д. findFn
(from sos
) и Google, похоже, не findFn
к соответствующим результатам, кроме как устанавливать диапазоны осей.
- Малое изменение значения невидимо с помощью scale_colour_gradient2
- Измените пустые ячейки на «NA»
- Измените порядок дискретной шкалы x
- Частичное совпадение аргумента функции
- Как читать файл csv в R, где некоторые значения содержат символ процента (%)
- Назначить несколько новых переменных на LHS в одной строке
- Нестандартная оценка (NSE) в dplyr's filter_ и извлечение данных из MySQL
- Изменение формы данных с широкоформатного формата
- Самый простой способ сгруппировать барплот
- Запустить скрипт VBA из R
- Как получить обратную шкалу log10 в ggplot2?
- Ошибка DocumentTermMatrix в аргументе Corpus
- geom_boxplot с предварительно вычисленными значениями
В новых версиях 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