0

这段代码复制了这个问题:

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")

如果您运行该代码,它将产生以下图:

有问题的情节

该图的问题在于第一个图的 y 轴标题的定位。我想也许设置axis = "n"会阻止它与第二个图的轴对齐,但事实并非如此。

我想要的输出是这个图,它对齐了图形但没有对齐轴标签。

期望的输出

4

1 回答 1

1

您可以改用该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)

reprex 包(v0.2.1.9000)于 2018 年 9 月 21 日创建

于 2018-09-21T20:46:10.823 回答