Ваш axis
находится в масштабе log1p
, поэтому ваш xlim
должен быть заключен в log1p
для увеличения. Вы можете сделать следующее:
g+expand_limits(x = c(1, 6000)) +facet_zoom(xlim = c(log1p(4000),log1p(5000)))
Вот пример, использующий набор данных mtcars
.
library(ggplot2)
library(ggforce)
g <- ggplot(mtcars, aes(x=hp)) +
stat_density(aes(y=..count..), color="black", fill="blue", alpha=0.3) +
scale_x_continuous(breaks=c(0,1,2,3,4,5,10,30,100,300), trans="log1p", expand=c(0,0)) +
theme_bw()
Если вы используете facet_zoom(xlim = c(100,300))
, как показано ниже, вы получите пустой результат масштабирования (плоские значения 100 и 300 не существуют на оси x оси g):
g+expand_limits(x = c(1, 300)) +facet_zoom(xlim = c(100,300))
Выход-1 (плоское увеличение масштаба)
Если вы преобразуете xlim
, используя log1p
, вы можете увеличить соответствующие значенияx-axis
участка g
. Вы можете сделать это следующим образом:
g+expand_limits(x = c(1, 300)) +facet_zoom(xlim = c(log1p(100),log1p(300)))
Output-2 (log1p zoom)
Если вы хотите zoom
по оси независимо вы можете сделать следующее:
g+expand_limits(x = c(1, 300)) +facet_zoom(xlim = c(log1p(100),log1p(300)), ylim = c(5,10), split = TRUE)
Вывод
Как вы можете видеть, я делал масштабированиеylim
между 5
и 10
и split = TRUE
делают масштабирование независимым, и вы можете иметь несколько видов оси масштабирования или, если вам нужен только один вид, вы можете оставить split
его значение по умолчаниюFALSE
. В руководстве содержится гораздо больше информации, с которой вы можете ознакомиться, на случай, если оно доступно по адресу Пакет 'ggforce'
Надеюсь, это поможет.