我有两个图表:FigA和FigB。它们都是分面包装的。FigA是基于短因子标签进行分面的,而FigB是基于较长的因子标签进行分面的。FigA和FigB都共享一个x轴,因此我想通过cowplot垂直显示它们,条纹标签位于绘图的右侧,并带有水平文本。这会导致FigA的短条纹标签周围出现大量空白区域。
什么是格式化条形标签背景的最佳方法,以便它们可以扩展到填充可用的水平空间?
我一直在尝试使用strip.background和strip.text边距、大小和其他参数进行实验,但目前还没有达到预期的结果。我是否遗漏了一些明显的东西?
以下是一个最小示例
(我意识到我可能可以使用pivot_longer并使用这个简单的示例生成一个单独的图表,但是否有一种直接修改条形标签以适应更复杂情况的方法?):
我一直在尝试使用strip.background和strip.text边距、大小和其他参数进行实验,但目前还没有达到预期的结果。我是否遗漏了一些明显的东西?
以下是一个最小示例
(我意识到我可能可以使用pivot_longer并使用这个简单的示例生成一个单独的图表,但是否有一种直接修改条形标签以适应更复杂情况的方法?):
library(tidyverse)
library(cowplot)
df <- data.frame( shortCat = sample(c('a','b'), 10, replace=TRUE),
longCat = sample(c('a really long label','another really long label'), 10, replace=TRUE),
x = sample(seq(as.Date('2020/01/01'), as.Date('2020/12/31'), by="day"), 10),
y = sample(0:25, 10, replace = TRUE) )
figA <- df %>% ggplot( aes(x=x,y=y) ) +
geom_line() +
facet_wrap(vars(shortCat), ncol=1, strip.position ="right", scales="free_y") +
theme( axis.title.y=element_blank(),
axis.title.x=element_blank(),
axis.text.x=element_blank(),
axis.ticks.x=element_blank(),
strip.text.y.right = element_text(angle = 0, hjust=0) )
figB <- df %>% ggplot( aes(x=x,y=y) ) +
geom_bar(stat="identity") +
facet_wrap(vars(longCat), ncol=1, strip.position ="right", scales="free_y") +
theme( axis.title.y=element_blank(),
strip.text.y.right = element_text(angle = 0, hjust=0) )
plot_grid(figA,figB, ncol=1, align="v")