ggplot plot size grid.arrange

时间:2016-02-17 09:15:13

标签: r ggplot2 geom-bar

我有三个数据帧(保存在一个列表中),我将其单独绘制为条形图。这些图的代码如下所示:

plot1 <- ggplot(list[[1]], aes_string(x = names(list[[1]])[[1]], y = "Kat")) + 
  geom_bar(stat = "identity", width = 0.6) + 
  ylim(0,100) +
  coord_flip() +
  guides(fill=FALSE) +
  theme_bw() + theme( strip.background  = element_blank(),
                      panel.grid.major = element_line(colour = "grey80"),
                      panel.border = element_blank(),
                      axis.ticks = element_blank(),
                      panel.grid.minor.y = element_blank(),
                      panel.grid.major.y = element_blank(),
                      axis.text.y = element_text(hjust = 0.5))

plot2 <- ggplot(list[[2]], aes_string(x = names(list[[2]])[[1]], y = "Kat")) + 
  geom_bar(stat = "identity", width = 0.6) + 
  ylim(0,100) +
  coord_flip() +
  guides(fill=FALSE) +
  theme_bw() + theme( strip.background  = element_blank(),
                      panel.grid.major = element_line(colour = "grey80"),
                      panel.border = element_blank(),
                      axis.ticks = element_blank(),
                      panel.grid.minor.y = element_blank(),
                      panel.grid.major.y = element_blank(),
                      axis.text.y = element_text(hjust = 0.5))


plot3 <- ggplot(list[[3]], aes_string(x = names(list[[3]])[[1]], y = "Kat")) + 
  geom_bar(stat = "identity", width = 0.6) + 
  ylim(0,100) +
  coord_flip() +
  guides(fill=FALSE) +
  theme_bw() + theme( strip.background  = element_blank(),
                      panel.grid.major = element_line(colour = "grey80"),
                      panel.border = element_blank(),
                      axis.ticks = element_blank(),
                      panel.grid.minor.y = element_blank(),
                      panel.grid.major.y = element_blank(),
                      axis.text.y = element_text(hjust = 0.5))

我的目标是使用grid.arrange将所有三个图表一个接一个地排列 看起来像这样:

grid.arrange(plot1, plot1, plot3, ncol=1)

graphic output

但是,由于其中一个图有三个条而另外两个只有两个条,使用grid.arrange 时条的宽度不一样。因此问题: 如何使用grid.arrange来保持图形的大小(或条形的宽度)以一个在另一个下方显示它们?

包含三个数据帧的列表如下所示:

[[1]]
  Bildung Kat
2    Hoch  67
3 Mittel   50
4    Tief  25

[[2]]
  Geschlecht Kat
6          W  60
7          M  40

[[3]]
   Region Kat
9   Stadt  80
10   Land  70

1 个答案:

答案 0 :(得分:0)

也许在所有三个图中使用coord_equal()或coord_fixed()会有帮助吗?