在ggplot2和facet_wrap中,如何删除所有边距和内边距,同时保留strip.text?

丹阮

这可能主要是由于我误解panel.margin = unit(...)theme()函数的工作原理……但是我无法按照自己想要的方式在facet_wrap中自定义边距。基本上,我想要一个facet_grid像这样,strip.text在每个构面中都插入有构面文本(即),并且每个构面之间都没有缝隙:

(我留在粉红色的边框中显示每个构面的尺寸)

理想的最终产品

所以这是到目前为止的代码。

设置数据并绘制:

library(ggplot2)
library(grid)
p <- ggplot() +
  geom_bar(data = mtcars, aes(x = cyl, y = qsec), stat = 'identity') +
  facet_wrap( ~ carb, ncol = 3)

mytheme <- theme_minimal() + theme(
  axis.text.x = element_blank(),
  axis.text.y = element_blank(),
  axis.ticks = element_blank(),
  axis.title = element_blank(),
  panel.margin = unit(0, "lines"),
  panel.border = element_rect(colour = rgb(1.0, 0, 0, 0.5), fill=NA, size=1)
)
标准剧情
 p + mytheme

只是一个标准的情节

完全删除strip.text
p + mytheme + theme(strip.text = element_blank())

无带状文字

添加strip.text并将其插入
p + mytheme +
     theme(strip.text = element_text(size = rel(3.0), vjust = -4.0))

测试网格插入文本

重新包含strip.text(以及增加的相对大小)会增加两行之间的垂直边距。所以在这一点上,我不知道如何缩小顶部和底部行之间的垂直间隙。

负边距太大
p + mytheme +
    theme(strip.text = element_text(size = rel(3.0), vjust = -4.0), 
          panel.margin = unit(c(-2, -2), "lines"))

负边距太大

那么,如何仅将两行之间的panel.margin作为目标?

编辑:其他信息。行之间的空间似乎是strip.background

p + mytheme +
        theme(strip.text = element_text(size = rel(3.0), vjust = -4.0),
              panel.margin = unit(-1, "lines"),
              strip.background = element_rect(fill = rgb(0, 1.0, 0, 0.2)))

在此处输入图片说明

可能

在的可能参数列表中theme(),不仅存在panel.margin(“小平面面板(单位)上的边距”,请参见?theme),而且还可以方便地一次使用panel.margin.xpanel.margin.y分别访问其中一个轴(“水平/垂直边距”)。围绕小平面面板(单位;继承自panel.margin)”)。

因此,虽然将边距减小到零以下感觉有点像黑客,但可以使用以下方法来完成工作(您可能需要稍微调整一下值-unit(-2, "lines")最适合我):

p + theme(strip.text = element_text(size = rel(3.0), vjust = -4.0), 
          panel.margin.y = unit(-2, "lines"))

如果使用strip.text = element_blank(),则可能应该使用panel.margin.y = unit(-0.5, "lines")

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Java-带有边距和JTextArea的JPanel

在ggplot2中使用facet_wrap和scales =“ free”设置单个轴限制

ggplot2中的facet_wrap()和facet_grid()有什么区别?

ggplot2:如何获取facet_grid()的labeller = label_both和facet_wrap()的ncol选项的合并功能?

如何删除ggplot2中绘图区域和面板之间的边距?

使用geom_text和facet_wrap:unit(x,default.units)中的错误:“ x”和“ units”的长度必须大于0

指定组时,ggplot2中带有facet_wrap的geom_text

ggplot2:更改facet_grid图中的strip.text位置

获取axis.text和axis.title之间的边距值

使图例不可见,但在ggplot2中,图形尺寸和边距保持相同

调整strip.background的大小以匹配ggplot facet_wrap中的strip.text

ggplot-具有自由尺度的geom_text facet_wrap

如何将3个div并排留有边距和边框?

如何从ggplot2 facet_wrap删除构面?

减少ggplot2和grid.arrange中的所有绘图边距

如何使用facet_wrap`表`所有因子列和ggplot geom_bar?

Facet_wrap和scale =“ free”意外地使ggplot2中的y轴居中于零

带有边距和响应能力的在Bootstrap中浮动图像的最佳方法?

SVG <g>和<text>元素的默认宽度/边距/填充是什么?

在ggplot2和facet_wrap中具有表达式的as_labeller

具有边框和边距问题的CSS

Flexbox 内边框和负边距

通过 CSS 删除 Wordpress for Mobile 中的内边距和边距

如何删除R中的ggplot边距

在 ggplot2 中向 facet_wrap 添加下标和符号

在 Flutter 中,Text Widget 中的非英语语言有奇怪的边距值

每条刻面线具有不同 y 轴的 ggplot2 刻面:如何从 facet_grid 和 facet_wrap 中获得“最佳”?

当项目有边距和边框时如何使用flex设置每行3个项目

删除文本和边框之间的所有边距/填充