Это работает для вашего варианта использования:
ggplot(data, aes(x = x, y = y)) +
geom_point() +
facet_zoom(x = between(x, 0, 10)) +
scale_x_continuous(breaks = pretty)
С ?scale_x_continuous
, breaks
примет следующее (выделение добавлено):
Один из:
NULL
без перерывов
waiver()
для разрывов по умолчанию, вычисленных объектом преобразования
- Числовой вектор позиций
- A функция , которая принимает пределы в качестве входных данных и возвращает разрывы в качестве выходных данных
pretty()
- одна из таких функций. Он не предлагает очень точного контроля, но позволяет вам иметь некоторую свободу действий для определения разрывов между различными гранями с очень разными масштабами.
Для иллюстрации приведем два примера с различным желаемым количеством разрывов. См. ?pretty
для более подробной информации о других аргументах, которые принимает эта функция.
p <- ggplot(data, aes(x = x, y = y)) +
geom_point() +
facet_zoom(x = between(x, 0, 10))
cowplot::plot_grid(
p + scale_x_continuous(breaks = function(x) pretty(x, n = 3)),
p + scale_x_continuous(breaks = function(x) pretty(x, n = 10)),
labels = c("n = 3", "n = 10"),
nrow = 1
)
Конечно, вы также можете определить свою собственную функцию для преобразования пределов графика в желаемые разрывы (например, что-то вроде p + scale_x_continuous(breaks = function(x) seq(min(x), max(x), length.out = 5))
), но я обычно нахожу, что эти функции требуют более тонкой настройки, и pretty()
часто хорошо достаточно.