添加独立于条形文本标签的子图编号

Posted

技术标签:

【中文标题】添加独立于条形文本标签的子图编号【英文标题】:Add subfigure number independent of strip text label 【发布时间】:2021-07-02 01:13:17 【问题描述】:

我想找到一个简单的解决方案来为子图编号,因为这是我工作的一个非常标准的练习。我可以通过安排图并通过例如自动添加数字来做到这一点。 egg::ggarrange()。但是,如果我有一个 ggplot 已经通过facet_grid() 拆分为多个方面,并且带有长条形文本,这将变得复杂且特别难看。我已经问过similar question here。

在出版物中,我通常希望在左上角或右上角添加带有标签的子图,例如 1, 2, 3...A, B, C,...,并且子图文本标签描述居中的刻面。标签和文本都应该相互独立。查看我上面提到的question中@stefan的解决方案,标签和文本显然不是相互独立的,标签也不是左对齐的。

我想知道,是否有一个函数可以将1, 2, 3...A, B, C,... 之类的标签左对齐放在(居中)条形独立的刻面右上角顶部文字本身?那太棒了,而且会为我省去很多麻烦。

我显然可以使用"<b>1</b> Text label" 之类的标签并左对齐。但是,如果我有很长的文字,这看起来真的很难看。我想要实现的是左侧的数字标签和跨越两行的文本标签。

一个可接受的解决方案是将带状文本拆分为彼此独立的两列。这样,我可以将一个数字左对齐并在两行上居中放置一个文本标签。

【问题讨论】:

你看过tagger吗? 不,我没有!感谢您的信息,我会看看它:) 【参考方案1】:

感谢@stefan,我查看了tagger 包。我发现tag_facets() 函数有点难以使用(尤其是定位)。

但是,我注意到我已经拥有 egg 包中的 tag_facet() 函数(没有 s!)并决定试一试。这以一种不幸的方式改变了绘图的边距并将条形文本设置为element_blank(),但这很容易恢复(similar solution presented here in the answer by @Lyngbakr)。

我只是将它添加到我的情节中,并且效果很好:

egg::tag_facet(p, tag_pool = 1:5, open = "", close = "", vjust = -0.7) +
  coord_cartesian(clip = "off") +
  theme(strip.text = element_text(),
        legend.margin=margin(0,0,0,0),
        legend.box.margin=margin(-10,-10,-10,-10))

(虽然它会更直观,但这似乎不适用于egg::tag_facet_outside() 函数...)

【讨论】:

以上是关于添加独立于条形文本标签的子图编号的主要内容,如果未能解决你的问题,请参考以下文章

005.matplotlib的子图

005.matplotlib的子图

005.matplotlib的子图

Matplotlib的子图subplot的使用

latex子图编号问题

如何让条形码扫描仪从数据库中检查条形码编号?