【问题标题】:r: make expand_limit not add marginr: 使 expand_limit 不添加边距
【发布时间】:2022-01-12 14:53:41
【问题描述】:

我正在尝试制作一个没有任何边距的图,但我认为使用“expand_limits”会导致在我的图中添加边距。

在下面的示例中,我将两个图重叠以尝试说明我的观点。我创建了两个重叠的条形图,其中一个我使用 expand_limits 将绘图区域设置为包含 y=1.5 作为最大值。但是,当我绘制一个具有相同最大值的矩形时,很明显在 y 最大值上方没有空白。

如何阻止 y=1.5 上方(即下方矩形上方)的空白出现?

library(ggplot2)                        
library(tidyverse)
library(dplyr)
library(patchwork)

set.seed(16)
dataf1 <- tibble(
    percent=runif(4,0,1),
    group=c("Group A", "Group B", "Group C", "Group D")
)
dataf2 <- tibble(
    percent=runif(4,0,1),
    group=c("Group E", "Group F", "Group G", "Group H")
)

theme_update(axis.title = element_blank(),
      axis.text = element_blank(),
      axis.ticks =element_blank(),
      plot.margin=unit(c(0,0,0,0), "cm"),
      panel.spacing=unit(c(0,0,0,0), "cm"))

fig1 <- ggplot(data=dataf1, aes(y=percent,x=group)) +
    geom_bar(stat="identity") 
 
fig2 <- ggplot(data=dataf2, aes(y=percent,x=group)) +
    geom_bar(stat="identity") + theme(panel.background = element_blank()) +
    expand_limits(y=1.5)+
    geom_rect(xmin=1,xmax=4,ymin=0,ymax=1.5,fill=NA,color="black")

layout <- c(
    area(t=1,l=1,b=8,r=8),
    area(t=3,l=2,b=10,r=9))

fig1+fig2+plot_layout(design=layout)

【问题讨论】:

  • 可以设置scale_y_continuous(expand = c(0,0))去掉fig2位上方的白条。
  • 这似乎并没有改变我的结果。你测试了吗?也许我在胡扯你的建议,但我看不出有什么变化。

标签: r ggplot2


【解决方案1】:

这只是我对scale_y_continuous() 中的expand 参数的评论。

library(ggplot2)                        
#> Warning: package 'ggplot2' was built under R version 4.1.1
library(tidyverse)
#> Warning: package 'tibble' was built under R version 4.1.1
#> Warning: package 'tidyr' was built under R version 4.1.1
#> Warning: package 'readr' was built under R version 4.1.1
library(dplyr)
library(patchwork)

set.seed(16)
dataf1 <- tibble(
  percent=runif(4,0,1),
  group=c("Group A", "Group B", "Group C", "Group D")
)
dataf2 <- tibble(
  percent=runif(4,0,1),
  group=c("Group E", "Group F", "Group G", "Group H")
)

theme_update(axis.title = element_blank(),
             axis.text = element_blank(),
             axis.ticks =element_blank(),
             plot.margin=unit(c(0,0,0,0), "cm"),
             panel.spacing=unit(c(0,0,0,0), "cm"))

fig1 <- ggplot(data=dataf1, aes(y=percent,x=group)) +
  geom_bar(stat="identity") 

fig2 <- ggplot(data=dataf2, aes(y=percent,x=group)) +
  geom_bar(stat="identity") + theme(panel.background = element_blank()) +
  expand_limits(y=1.5)+
  geom_rect(xmin=1,xmax=4,ymin=0,ymax=1.5,fill=NA,color="black")

layout <- c(
  area(t=1,l=1,b=8,r=8),
  area(t=3,l=2,b=10,r=9))

fig1+fig2+plot_layout(design=layout)

fig3 <- fig2 + scale_y_continuous(expand = c(0, 0))

fig1 + fig3 + plot_layout(design = layout)

reprex package 创建于 2021-12-07 (v2.0.1)

【讨论】:

  • 非常感谢!我搞砸了您的建议的实施,因此感谢您抽出时间发布示例。
猜你喜欢
  • 2014-10-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-25
  • 2022-01-20
相关资源
最近更新 更多