Первый (+
) - один или несколько символов . Второй (*
) - ноль или более символов . Оба не являются жадными (?
) и соответствуют чему-либо (.
).
Я не знаю способа изменения осевых разрывов и диапазонов отдельных граней в гранжевом графике. Однако другой вариант - создать отдельные графики для каждого уровня переменной огранки, а затем выложить все графики вместе. Создание каждого сюжета индивидуально позволяет вам иметь более тонкий контроль над осевыми разрывами и диапазонами для каждого графика.
Вот пример со встроенным фреймом данных mtcars
:
library(scales) # For pretty_breaks
library(grid) # For textGrob
library(gridExtra) # For grid.arrange
library(cowplot) # For plot_grid
В приведенном ниже коде создается список графиков, по одному для каждого уровня cyl
. Обратите внимание на использование scale_y_continuous
для установки y-диапазона для каждого графика. Это просто иллюстрация. Вы можете значительно улучшить управление диапазонами осей и разрывов для каждого графика.
pl = lapply(sort(unique(mtcars$cyl)), function(i) {
p = ggplot(mtcars[mtcars$cyl==i, ], aes(wt, mpg)) +
facet_wrap(~cyl) +
geom_point() +
labs(x="Weight", y="") +
scale_y_continuous(limits=c(ifelse(i==4, 10, 0), 1.1 * max(mtcars$mpg[mtcars$cyl==i])),
breaks=pretty_breaks(ifelse(i==6, 6, 3))) +
scale_x_continuous(limits=range(mtcars$wt)) +
theme(plot.margin=unit(c(0, 0.1, 0, -1),"lines"))
# Remove x-axis labels and title except for last plot
if(i < max(mtcars$cyl)) p = p + theme(axis.text.x=element_blank(),
axis.title.x=element_blank())
return(p)
})
Теперь выложите графики в одном столбце. Мы также добавляем метку оси y.
grid.arrange(textGrob("MPG", rot=90), plot_grid(plotlist=pl, ncol=1, align="h"),
widths=c(0.03,0.97), ncol=2)