Расположите несколько участков и держите метку оси x на одном уровне с осью

#r #ggplot2 #patchwork

Вопрос:

Я устраиваю несколько сюжетов, используя patchwork пакет. На одном из графиков текст расположен вертикально, что толкает метку оси x вниз (как и должно быть), но когда я объединяюсь со вторым графиком, метки оси x на обоих участках перемещаются вниз. Я хотел бы сохранить метку оси x второго графика в исходном положении. Проще объяснить на примере:

 library(ggplot2)
library(patchwork)

# Toy data
mtcars2 <- mtcars[1:5, ]
mtcars2$mod <- row.names(mtcars2)


# make 2 plots
p1 <- ggplot(mtcars2, aes(mod, mpg))  
  geom_col()  
  theme(axis.text.x = element_text(angle = 90, vjust = 0, hjust = 1))

p2 <- ggplot(mtcars2, aes(hp, disp))  
  geom_point()

# arrange plots next to each other
p1   p2
 

введите описание изображения здесь

Но я хочу:

введите описание изображения здесь

Возможно ли это? Я не привязан к patchwork этому, и я пытался gridExtra::grid.arrange() , но вместо этого изменил размеры участков.

Ответ №1:

Используя library(cowplot) , ось x p2 будет опускаться, не так, как в вашем примере, но я хочу, чтобы это вам помогло. Если вам нужно указать местоположение оси x в том же положении, пожалуйста, дайте мне знать.

Дополнительная заметка от @phalteman

Добавив , align = "h", axis = "b" plot_grid , это действительно станет тем, что вы хотели!!

 library(cowplot)
mtcars2 <- mtcars[1:5, ]
mtcars2$mod <- row.names(mtcars2)


# make 2 plots
p1 <- ggplot(mtcars2, aes(mod, mpg))  
  geom_col()  
  theme(axis.text.x = element_text(angle = 90, vjust = 0, hjust = 1))

p2 <- ggplot(mtcars2, aes(hp, disp))  
  geom_point()

# arrange plots next to each other

plot_grid(p1, p2, align = "h", axis = "b") #Thanks to @phalteman 
 

ковплот

Комментарии:

1. Включите align = "h", axis = "b" это в свой вызов plot_grid() , и он сделает именно то, о чем просил ОП.