cowplot: заголовок оси принудительно выравнивается при выравнивании двух графиков - PullRequest
0 голосов
/ 21 сентября 2018

Этот код повторяет проблему:

library(ggplot2)

set.seed(0)
df <- data.frame(ID = letters[1:10],
                 Var = rnorm(10),
                 "Some_very_long_label_names" = rnorm(10),
                 "Not_so_long" = rnorm(10),
                 "Short" = rnorm(10),
                 "Incredibly_long_label_name_why_oh_why" = rnorm(10),
                 "Etc" = rnorm(10))
melted_df <- reshape2::melt(df)

p1 <- ggplot(df, aes(ID, Var)) +
    geom_bar(stat = "identity") +
    theme(axis.title.x = element_blank())

p2 <- ggplot(melted_df, aes(ID, variable)) +
    geom_tile(aes(fill = value)) +
    guides(fill = FALSE)

cowplot::plot_grid(p1, p2, nrow = 2, align = "v", axis = "n")

Если вы запустите этот код, он выдаст этот график:

Problematic plot

Проблема с этим графиком заключается в расположении заголовка оси Y первого графика.Я подумал, что, возможно, установка axis = "n" остановит его выравнивание по оси со второго графика, но это не так.

Мой желаемый результат - это график, который выровняет графику, но не метки оси.

Desired output

1 Ответ

0 голосов
/ 21 сентября 2018

Вместо этого вы можете использовать пакет egg

library(ggplot2)

p1 <- ggplot(df, aes(ID, Var)) +
  geom_bar(stat = "identity") +
  scale_x_discrete(expand = c(0, 0)) +
  theme_bw() +
  theme(axis.title.x = element_blank())

p2 <- ggplot(melted_df, aes(ID, variable)) +
  geom_tile(aes(fill = value)) +
  scale_x_discrete(expand = c(0, 0)) +
  theme_bw() +
  guides(fill = FALSE)

library(egg)
#> Loading required package: gridExtra
ggarrange(p1, p2, nrow = 2)

Создан в 2018-09-21 пакетом Представлять (v0.2.1.9000)

...