如何在ggplot中没有边缘的情况下控制图表区域的高度?

时间:2018-11-12 10:33:37

标签: r ggplot2

有没有办法使图表区域的大小在两个图中相等? 在演示文稿中使用这两个图表时,如果 矩形将分裂并“保持原位”。

滑动创建演示文稿时,我无法通过使用plot.margin来做到这一点。

unsynchronized mosaic plots

2 个答案:

答案 0 :(得分:0)

这里有一些代码演示了这个问题。
我希望灰色图表区域的底部边框对齐。

## ------------------------------------------------------------------------
library(tidyverse)
library(ggmosaic)
library(gridExtra)

## ------------------------------------------------------------------------
pruef <- tibble::tribble(
  ~Geschlecht, ~Studium, ~Test,   ~n,
          "m",   "MINT", "pos", 165L,
          "w",   "MINT", "pos",  60L,
          "m",    "HUM", "pos",  30L,
          "w",    "HUM", "pos", 105L,
          "m",   "MINT", "neg", 135L,
          "w",   "MINT", "neg",  40L,
          "m",    "HUM", "neg",  70L,
          "w",    "HUM", "neg", 195L
  )

## ------------------------------------------------------------------------
pruef %>%
  ggplot() +
  geom_mosaic(aes(
    x = product(Test),
    weight = n,
    fill = Test
  ), divider = "vspine") +
  guides(fill = guide_legend(reverse = TRUE)) +
  labs(x = "", y = "") +
  theme(axis.text.x = element_blank(),
        axis.ticks.x = element_blank()) -> p1


## ------------------------------------------------------------------------
pruef %>%
  ggplot() +
  geom_mosaic(aes(x=product(Studium,Geschlecht),weight=n,fill=Test),divider=ddecker()) +
  guides(fill=guide_legend(reverse=TRUE)) +
  labs(x="",y="") +
  theme(axis.ticks.x = element_blank(),
        axis.text.x=element_text(angle=90)) ->p2

## ------------------------------------------------------------------------
grid.arrange(p1,p2,nrow=1)

enter image description here

答案 1 :(得分:0)

使用

library(cowplot)
plot_grid(p1, p2, align = "h")

1

如果要删除重复的图例,则需要将plot_grid()嵌套在另一个plot_grid()中(如果情节或代码变化很大,这会有点麻烦)。


或者,为了获得舒适而牺牲稳定性,然后尝试

library(egg)
ggarrange(p1 + theme(legend.position = "none"), p2, nrow = 1)

2