Насколько я знаю, это еще не было реализовано в ggplot2. Однако обходной путь - который даст вам ylims, превышающий то, что предоставляет ggplot автоматически, - это добавление «искусственных данных». Чтобы уменьшить ylims, просто удалите данные, которые вы не хотите отображать (см. Пример в и).
Вот пример:
Давайте просто настроим фиктивные данные, которые вы хотите построить
df <- data.frame(x=rep(seq(1,2,.1),4),f1=factor(rep(c("a","b"),each=22)),f2=factor(rep(c("x","y"),22)))
df <- within(df,y <- x^2)
Что мы могли бы построить с помощью линейных графиков
p <- ggplot(df,aes(x,y))+geom_line()+facet_grid(f1~f2,scales="free_y")
print(p)
Предположим, что мы хотим, чтобы y начиналось с -10 в первой строке и 0 во второй строке, поэтому мы добавляем точку в (0, -10) на верхнем левом графике и в (0,0) на нижнем левый участок:
ylim <- data.frame(x=rep(0,2),y=c(-10,0),f1=factor(c("a","b")),f2=factor(c("x","y")))
dfy <- rbind(df,ylim)
Теперь, ограничив шкалу x между 1 и 2, эти добавленные точки не отображаются (выдается предупреждение):
p <- ggplot(dfy,aes(x,y))+geom_line()+facet_grid(f1~f2,scales="free_y")+xlim(c(1,2))
print(p)
То же самое будет работать для увеличения указанного выше поля путем добавления точек с более высокими значениями y при значениях x, которые находятся за пределами диапазона xlim.
Это не сработает, если вы хотите уменьшить ylim, и в этом случае решение вопроса может быть подмножество ваших данных, например, ограничить верхний ряд от -10 до 1.5, который вы можете использовать:
p <- ggplot(dfy,aes(x,y))+geom_line(subset=.(y < 1.5 | f1 != "a"))+facet_grid(f1~f2,scales="free_y")+xlim(c(1,2))
print(p)