ggplot равное количество тиков по оси x с использованием facet_wrap [duplicate]

Первый (+) - один или несколько символов . Второй (*) - ноль или более символов . Оба не являются жадными (?) и соответствуют чему-либо (.).

4
задан eipi10 5 April 2016 в 17:43
поделиться

1 ответ

Я не знаю способа изменения осевых разрывов и диапазонов отдельных граней в гранжевом графике. Однако другой вариант - создать отдельные графики для каждого уровня переменной огранки, а затем выложить все графики вместе. Создание каждого сюжета индивидуально позволяет вам иметь более тонкий контроль над осевыми разрывами и диапазонами для каждого графика.

Вот пример со встроенным фреймом данных 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)

5
ответ дан eipi10 15 August 2018 в 23:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: