如何减小ggplot2使用theme_ipsum_rc时水平图例的元素间距
问题根源
你遇到的图例间距异常问题核心来自 hrbrthemes::theme_ipsum_rc() 的默认配置:该主题默认设置了较大的 legend.key.width(图例色块宽度),这才是导致间距随文本长度成正比变化的原因,你之前尝试调整的legend.spacing.x、legend.text边距等参数都没有命中核心配置项。
解决方案
只需要在theme()配置中新增legend.key.width参数,自定义缩小图例色块宽度即可,你可以根据自己的需求调整单位数值:
# 修正后的绘图代码 data %>% ggplot(aes(item, count, fill = resp, order = resp)) + geom_col(data = filter(data, !(resp %in% c("Strongly disagree", "Disagree"))), position = position_stack(reverse = T)) + geom_col(aes(y = -count), filter(data, !(resp %in% c("Agree", "Strongly agree")))) + scale_fill_brewer(palette = "RdBu", drop = F) + labs(y = NULL) + coord_flip() + theme_ipsum_rc() + theme(legend.position="bottom", legend.key.width = unit(0.2, "cm"), # 新增这行调整图例色块宽度 legend.spacing.x = unit(0.1, "cm"), legend.text = element_text(margin = margin(0,0,0,0)), legend.margin=margin(c(0,0,0,0)))
如果还需要进一步缩小图例条目之间的空隙,可以配合调小legend.spacing.x的数值即可,完全可以在保留theme_ipsum_rc所有其他样式的前提下解决间距问题。
内容的提问来源于stack exchange,提问作者iNyar
相关产品推荐
相关产品推荐

